c_src: update for 0.4
[nit.git] / c_src / parser_prod._sep.c
index e0a94e4..f75ca4c 100644 (file)
 /* This C file is generated by NIT to compile module parser_prod. */
 #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};
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  tracehead = trace.prev;
-  return ATTR_parser_prod___PNode____parent( self) /*PNode::_parent*/;
-}
-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};
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  ATTR_parser_prod___PNode____parent( self) /*PNode::_parent*/ =  param0;
-  tracehead = trace.prev;
-  return;
-}
-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;
-  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*/;
-  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};
-  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);
-  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;
-  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*/;
-  }
-  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};
-  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);
-  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};
-  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);
-  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};
-  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);
-  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};
-  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);
-  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___init(); /*new String*/
-  variable2 = NEW_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___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___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*/;
-  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;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  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;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  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;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 =  param1;
-  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___init(); /*new String*/
-  variable1 = NEW_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___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___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___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*/;
-  goto return_label6;
-  return_label6: while(false);
-  tracehead = trace.prev;
-  return variable0;
-}
-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;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 = ((lexer___Token___line_t)CALL( self,COLOR_lexer___Token___line))( self) /*Token::line*/;
-  goto return_label7;
-  return_label7: while(false);
-  tracehead = trace.prev;
-  return variable0;
-}
-val_t parser_prod___Prod___first_token(val_t  self) {
-  struct trace_t trace = {NULL, NULL, 64, LOCATE_parser_prod___Prod___first_token};
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  tracehead = trace.prev;
-  return ATTR_parser_prod___Prod____first_token( self) /*Prod::_first_token*/;
-}
-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};
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  ATTR_parser_prod___Prod____first_token( self) /*Prod::_first_token*/ =  param0;
-  tracehead = trace.prev;
-  return;
-}
-val_t parser_prod___Prod___last_token(val_t  self) {
-  struct trace_t trace = {NULL, NULL, 67, LOCATE_parser_prod___Prod___last_token};
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  tracehead = trace.prev;
-  return ATTR_parser_prod___Prod____last_token( self) /*Prod::_last_token*/;
-}
-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};
-  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___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___init(); /*new String*/
-    variable2 = NEW_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___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___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___init(); /*new String*/
-    variable2 = NEW_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___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___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___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};
-  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);
-  nit_exit(1);
-  tracehead = trace.prev;
-  return;
-}
-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};
-  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;
-  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___init(); /*new List[E]*/
-  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, 132); 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*/;
-  }
-  break_14: while(0);
-  variable3 = NEW_list___List___init(); /*new List[E]*/
-  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, 138); 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;
-  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, 144, 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, 146); 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, 150); 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___without_last( TAG_Int(0), variable2); /*new Range[E]*/
-  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___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, 160); 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=*/;
-      } 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*/;
-      }
-      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___without_last( TAG_Int(0), variable2); /*new Range[E]*/
-  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___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, 172); 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=*/;
-      } 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*/;
-      }
-      goto return_label16;
-    }
-    continue_18: while(0);
-    ((abstract_collection___Iterator___next_t)CALL(variable2,COLOR_abstract_collection___Iterator___next))(variable2) /*Iterator::next*/;
-  }
-  break_18: while(0);
-  return_label16: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AModule___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 183, 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*/;
-  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*/;
-  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*/;
-  }
-  break_21: while(0);
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AModule___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 196, LOCATE_parser_prod___AModule___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___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=*/;
-    continue_23: while(0);
-  }
-  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=*/;
-    continue_24: while(0);
-  }
-  break_24: while(0);
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___APackagedecl___n_doc__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 218, LOCATE_parser_prod___APackagedecl___n_doc__eq};
-  val_t variable0;
-  val_t variable1;
-  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=*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___APackagedecl___n_kwpackage__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 225, LOCATE_parser_prod___APackagedecl___n_kwpackage__eq};
-  val_t variable0;
-  val_t variable1;
-  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=*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___APackagedecl___n_id__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 232, 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, 240, 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, 242, LOCATE_parser_prod___APackagedecl___init_apackagedecl};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  val_t variable3;
-  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;
-  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=*/;
-  }
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_APackagedecl].i] = 1;
-  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, 262, 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, 264); 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, 268); 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, 278); 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, 288); 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;
-  }
-  return_label30: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___APackagedecl___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 297, LOCATE_parser_prod___APackagedecl___visit_all};
-  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*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___APackagedecl___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 310, 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*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AImport___n_visibility__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 324, LOCATE_parser_prod___AImport___n_visibility__eq};
-  val_t variable0;
-  val_t variable1;
-  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=*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AImport___n_kwimport__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 331, LOCATE_parser_prod___AImport___n_kwimport__eq};
-  val_t variable0;
-  val_t variable1;
-  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=*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AImport___n_id__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 338, LOCATE_parser_prod___AImport___n_id__eq};
-  val_t variable0;
-  val_t variable1;
-  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=*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AImport___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 346, LOCATE_parser_prod___AImport___empty_init};
-  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;
-  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, 348, LOCATE_parser_prod___AImport___init_aimport};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  val_t variable3;
-  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;
-  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=*/;
-  }
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AImport].i] = 1;
-  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, 368, 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, 370); 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, 374); 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, 384); 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, 394); 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;
-  }
-  return_label38: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AImport___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 403, LOCATE_parser_prod___AImport___visit_all};
-  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*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AImport___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 416, 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*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___ANoImport___n_visibility__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 430, LOCATE_parser_prod___ANoImport___n_visibility__eq};
-  val_t variable0;
-  val_t variable1;
-  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=*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___ANoImport___n_kwimport__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 437, LOCATE_parser_prod___ANoImport___n_kwimport__eq};
-  val_t variable0;
-  val_t variable1;
-  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=*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___ANoImport___n_kwend__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 444, LOCATE_parser_prod___ANoImport___n_kwend__eq};
-  val_t variable0;
-  val_t variable1;
-  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=*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___ANoImport___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 452, LOCATE_parser_prod___ANoImport___empty_init};
-  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;
-  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, 454, LOCATE_parser_prod___ANoImport___init_anoimport};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  val_t variable3;
-  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;
-  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=*/;
-  }
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ANoImport].i] = 1;
-  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, 474, 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, 476); 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, 480); 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, 490); 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, 500); 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;
-  }
-  return_label46: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___ANoImport___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 509, LOCATE_parser_prod___ANoImport___visit_all};
-  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*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___ANoImport___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 522, 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*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___APublicVisibility___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 537, LOCATE_parser_prod___APublicVisibility___empty_init};
-  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;
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___APublicVisibility___init_apublicvisibility(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 539, LOCATE_parser_prod___APublicVisibility___init_apublicvisibility};
-  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;
-  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, 543, LOCATE_parser_prod___APublicVisibility___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___APublicVisibility___replace_child, LOCATE_parser_prod, 545); nit_exit(1);}
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___APublicVisibility___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 548, LOCATE_parser_prod___APublicVisibility___visit_all};
-  val_t variable0;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___APublicVisibility___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 552, LOCATE_parser_prod___APublicVisibility___visit_all_reverse};
-  val_t variable0;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___APrivateVisibility___n_kwprivate__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 557, LOCATE_parser_prod___APrivateVisibility___n_kwprivate__eq};
-  val_t variable0;
-  val_t variable1;
-  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=*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___APrivateVisibility___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 565, LOCATE_parser_prod___APrivateVisibility___empty_init};
-  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;
-  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, 567, LOCATE_parser_prod___APrivateVisibility___init_aprivatevisibility};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_APrivateVisibility].i]) return;
-  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=*/;
-  }
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_APrivateVisibility].i] = 1;
-  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, 577, 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, 579); 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, 583); nit_exit(1);}
-      ATTR_parser_nodes___APrivateVisibility____n_kwprivate( self) /*APrivateVisibility::_n_kwprivate*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___APrivateVisibility____n_kwprivate( self) /*APrivateVisibility::_n_kwprivate*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label57;
-  }
-  return_label57: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___APrivateVisibility___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 592, LOCATE_parser_prod___APrivateVisibility___visit_all};
-  val_t variable0;
-  val_t variable1;
-  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*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___APrivateVisibility___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 599, LOCATE_parser_prod___APrivateVisibility___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___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*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AProtectedVisibility___n_kwprotected__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 607, LOCATE_parser_prod___AProtectedVisibility___n_kwprotected__eq};
-  val_t variable0;
-  val_t variable1;
-  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=*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AProtectedVisibility___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 615, LOCATE_parser_prod___AProtectedVisibility___empty_init};
-  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;
-  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, 617, LOCATE_parser_prod___AProtectedVisibility___init_aprotectedvisibility};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AProtectedVisibility].i]) return;
-  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=*/;
-  }
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AProtectedVisibility].i] = 1;
-  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, 627, 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, 629); 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, 633); nit_exit(1);}
-      ATTR_parser_nodes___AProtectedVisibility____n_kwprotected( self) /*AProtectedVisibility::_n_kwprotected*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___AProtectedVisibility____n_kwprotected( self) /*AProtectedVisibility::_n_kwprotected*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label63;
-  }
-  return_label63: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AProtectedVisibility___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 642, LOCATE_parser_prod___AProtectedVisibility___visit_all};
-  val_t variable0;
-  val_t variable1;
-  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*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AProtectedVisibility___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 649, LOCATE_parser_prod___AProtectedVisibility___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___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*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AIntrudeVisibility___n_kwintrude__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 657, LOCATE_parser_prod___AIntrudeVisibility___n_kwintrude__eq};
-  val_t variable0;
-  val_t variable1;
-  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=*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AIntrudeVisibility___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 665, LOCATE_parser_prod___AIntrudeVisibility___empty_init};
-  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;
-  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, 667, LOCATE_parser_prod___AIntrudeVisibility___init_aintrudevisibility};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AIntrudeVisibility].i]) return;
-  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=*/;
-  }
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AIntrudeVisibility].i] = 1;
-  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, 677, 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, 679); 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, 683); nit_exit(1);}
-      ATTR_parser_nodes___AIntrudeVisibility____n_kwintrude( self) /*AIntrudeVisibility::_n_kwintrude*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___AIntrudeVisibility____n_kwintrude( self) /*AIntrudeVisibility::_n_kwintrude*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label69;
-  }
-  return_label69: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AIntrudeVisibility___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 692, LOCATE_parser_prod___AIntrudeVisibility___visit_all};
-  val_t variable0;
-  val_t variable1;
-  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*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AIntrudeVisibility___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 699, LOCATE_parser_prod___AIntrudeVisibility___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___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*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AClassdef___n_doc__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 707, LOCATE_parser_prod___AClassdef___n_doc__eq};
-  val_t variable0;
-  val_t variable1;
-  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=*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AClassdef___n_kwredef__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 714, LOCATE_parser_prod___AClassdef___n_kwredef__eq};
-  val_t variable0;
-  val_t variable1;
-  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=*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AClassdef___n_visibility__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 721, LOCATE_parser_prod___AClassdef___n_visibility__eq};
-  val_t variable0;
-  val_t variable1;
-  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=*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AClassdef___n_classkind__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 728, LOCATE_parser_prod___AClassdef___n_classkind__eq};
-  val_t variable0;
-  val_t variable1;
-  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=*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AClassdef___n_id__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 735, 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, 743, LOCATE_parser_prod___AClassdef___empty_init};
-  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, 745, 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;
-  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___init(); /*new List[E]*/
-  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, 778); 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*/;
-  }
-  break_79: while(0);
-  variable8 = NEW_list___List___init(); /*new List[E]*/
-  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, 784); 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___init(); /*new List[E]*/
-  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, 790); 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;
-  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, 796, 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, 798); 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, 802); 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, 812); 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, 822); 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, 832); 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, 842); 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___without_last( TAG_Int(0), variable2); /*new Range[E]*/
-  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___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, 852); 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=*/;
-      } 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*/;
-      }
-      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___without_last( TAG_Int(0), variable2); /*new Range[E]*/
-  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___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, 864); 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=*/;
-      } 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*/;
-      }
-      goto return_label82;
-    }
-    continue_84: while(0);
-    ((abstract_collection___Iterator___next_t)CALL(variable2,COLOR_abstract_collection___Iterator___next))(variable2) /*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___without_last( TAG_Int(0), variable2); /*new Range[E]*/
-  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___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, 876); 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=*/;
-      } 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*/;
-      }
-      goto return_label82;
-    }
-    continue_85: while(0);
-    ((abstract_collection___Iterator___next_t)CALL(variable2,COLOR_abstract_collection___Iterator___next))(variable2) /*Iterator::next*/;
-  }
-  break_85: while(0);
-  return_label82: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AClassdef___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 887, 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*/;
-  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*/;
-  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*/;
-  }
-  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*/;
-  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*/;
-  }
-  break_89: while(0);
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AClassdef___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 915, 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;
-  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;
-  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);
-  }
-  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;
-  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);
-  }
-  break_93: while(0);
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___ATopClassdef___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 957, LOCATE_parser_prod___ATopClassdef___empty_init};
-  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;
-  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, 959, 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;
-  variable1 = NEW_list___List___init(); /*new List[E]*/
-  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*/;
-  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, 965); 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;
-  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, 971, 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, 973); 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___without_last( TAG_Int(0), variable2); /*new Range[E]*/
-  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___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, 977); 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=*/;
-      } 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*/;
-      }
-      goto return_label97;
-    }
-    continue_98: while(0);
-    ((abstract_collection___Iterator___next_t)CALL(variable2,COLOR_abstract_collection___Iterator___next))(variable2) /*Iterator::next*/;
-  }
-  break_98: while(0);
-  return_label97: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___ATopClassdef___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 988, LOCATE_parser_prod___ATopClassdef___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___ATopClassdef____n_propdefs( self) /*ATopClassdef::_n_propdefs*/;
-  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_100: while(0);
-    ((list___ListIterator___next_t)CALL(variable1,COLOR_abstract_collection___Iterator___next))(variable1) /*ListIterator::next*/;
-  }
-  break_100: while(0);
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___ATopClassdef___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 995, LOCATE_parser_prod___ATopClassdef___visit_all_reverse};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  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;
-  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);
-  }
-  break_102: while(0);
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AMainClassdef___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 1008, LOCATE_parser_prod___AMainClassdef___empty_init};
-  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;
-  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, 1010, LOCATE_parser_prod___AMainClassdef___init_amainclassdef};
-  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_AMainClassdef].i]) return;
-  variable1 = NEW_list___List___init(); /*new List[E]*/
-  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*/;
-  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, 1016); 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;
-  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, 1022, 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, 1024); 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___without_last( TAG_Int(0), variable2); /*new Range[E]*/
-  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___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, 1028); 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=*/;
-      } 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*/;
-      }
-      goto return_label106;
-    }
-    continue_107: while(0);
-    ((abstract_collection___Iterator___next_t)CALL(variable2,COLOR_abstract_collection___Iterator___next))(variable2) /*Iterator::next*/;
-  }
-  break_107: while(0);
-  return_label106: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AMainClassdef___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 1039, LOCATE_parser_prod___AMainClassdef___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___AMainClassdef____n_propdefs( self) /*AMainClassdef::_n_propdefs*/;
-  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_109: while(0);
-    ((list___ListIterator___next_t)CALL(variable1,COLOR_abstract_collection___Iterator___next))(variable1) /*ListIterator::next*/;
-  }
-  break_109: while(0);
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AMainClassdef___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 1046, LOCATE_parser_prod___AMainClassdef___visit_all_reverse};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  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;
-  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);
-  }
-  break_111: while(0);
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AConcreteClasskind___n_kwclass__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 1058, LOCATE_parser_prod___AConcreteClasskind___n_kwclass__eq};
-  val_t variable0;
-  val_t variable1;
-  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=*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AConcreteClasskind___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 1066, LOCATE_parser_prod___AConcreteClasskind___empty_init};
-  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;
-  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, 1068, LOCATE_parser_prod___AConcreteClasskind___init_aconcreteclasskind};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AConcreteClasskind].i]) return;
-  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=*/;
-  }
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AConcreteClasskind].i] = 1;
-  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, 1078, 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, 1080); 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, 1084); nit_exit(1);}
-      ATTR_parser_nodes___AConcreteClasskind____n_kwclass( self) /*AConcreteClasskind::_n_kwclass*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___AConcreteClasskind____n_kwclass( self) /*AConcreteClasskind::_n_kwclass*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label115;
-  }
-  return_label115: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AConcreteClasskind___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 1093, LOCATE_parser_prod___AConcreteClasskind___visit_all};
-  val_t variable0;
-  val_t variable1;
-  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*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AConcreteClasskind___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 1100, LOCATE_parser_prod___AConcreteClasskind___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___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*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AAbstractClasskind___n_kwabstract__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 1108, LOCATE_parser_prod___AAbstractClasskind___n_kwabstract__eq};
-  val_t variable0;
-  val_t variable1;
-  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=*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AAbstractClasskind___n_kwclass__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 1115, LOCATE_parser_prod___AAbstractClasskind___n_kwclass__eq};
-  val_t variable0;
-  val_t variable1;
-  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=*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AAbstractClasskind___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 1123, LOCATE_parser_prod___AAbstractClasskind___empty_init};
-  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;
-  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, 1125, LOCATE_parser_prod___AAbstractClasskind___init_aabstractclasskind};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  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;
-  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=*/;
-  }
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AAbstractClasskind].i] = 1;
-  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, 1140, 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, 1142); 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, 1146); 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, 1156); 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;
-  }
-  return_label122: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AAbstractClasskind___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 1165, LOCATE_parser_prod___AAbstractClasskind___visit_all};
-  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*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AAbstractClasskind___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 1175, 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*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AInterfaceClasskind___n_kwinterface__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 1186, LOCATE_parser_prod___AInterfaceClasskind___n_kwinterface__eq};
-  val_t variable0;
-  val_t variable1;
-  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=*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AInterfaceClasskind___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 1194, LOCATE_parser_prod___AInterfaceClasskind___empty_init};
-  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;
-  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, 1196, LOCATE_parser_prod___AInterfaceClasskind___init_ainterfaceclasskind};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AInterfaceClasskind].i]) return;
-  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=*/;
-  }
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AInterfaceClasskind].i] = 1;
-  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, 1206, 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, 1208); 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, 1212); nit_exit(1);}
-      ATTR_parser_nodes___AInterfaceClasskind____n_kwinterface( self) /*AInterfaceClasskind::_n_kwinterface*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___AInterfaceClasskind____n_kwinterface( self) /*AInterfaceClasskind::_n_kwinterface*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label128;
-  }
-  return_label128: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AInterfaceClasskind___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 1221, LOCATE_parser_prod___AInterfaceClasskind___visit_all};
-  val_t variable0;
-  val_t variable1;
-  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*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AInterfaceClasskind___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 1228, LOCATE_parser_prod___AInterfaceClasskind___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___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*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AUniversalClasskind___n_kwuniversal__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 1236, LOCATE_parser_prod___AUniversalClasskind___n_kwuniversal__eq};
-  val_t variable0;
-  val_t variable1;
-  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=*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AUniversalClasskind___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 1244, LOCATE_parser_prod___AUniversalClasskind___empty_init};
-  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;
-  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, 1246, LOCATE_parser_prod___AUniversalClasskind___init_auniversalclasskind};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AUniversalClasskind].i]) return;
-  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=*/;
-  }
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AUniversalClasskind].i] = 1;
-  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, 1256, 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, 1258); 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, 1262); nit_exit(1);}
-      ATTR_parser_nodes___AUniversalClasskind____n_kwuniversal( self) /*AUniversalClasskind::_n_kwuniversal*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___AUniversalClasskind____n_kwuniversal( self) /*AUniversalClasskind::_n_kwuniversal*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label134;
-  }
-  return_label134: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AUniversalClasskind___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 1271, LOCATE_parser_prod___AUniversalClasskind___visit_all};
-  val_t variable0;
-  val_t variable1;
-  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*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AUniversalClasskind___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 1278, LOCATE_parser_prod___AUniversalClasskind___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___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*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AFormaldef___n_id__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 1286, LOCATE_parser_prod___AFormaldef___n_id__eq};
-  val_t variable0;
-  val_t variable1;
-  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=*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AFormaldef___n_type__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 1293, LOCATE_parser_prod___AFormaldef___n_type__eq};
-  val_t variable0;
-  val_t variable1;
-  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=*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AFormaldef___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 1301, LOCATE_parser_prod___AFormaldef___empty_init};
-  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;
-  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, 1303, LOCATE_parser_prod___AFormaldef___init_aformaldef};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  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;
-  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=*/;
-  }
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AFormaldef].i] = 1;
-  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, 1318, 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, 1320); 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, 1324); 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, 1334); 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;
-  }
-  return_label141: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AFormaldef___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 1343, LOCATE_parser_prod___AFormaldef___visit_all};
-  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*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AFormaldef___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 1353, 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*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___ASuperclass___n_kwspecial__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 1364, LOCATE_parser_prod___ASuperclass___n_kwspecial__eq};
-  val_t variable0;
-  val_t variable1;
-  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=*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___ASuperclass___n_type__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 1371, LOCATE_parser_prod___ASuperclass___n_type__eq};
-  val_t variable0;
-  val_t variable1;
-  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=*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___ASuperclass___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 1379, LOCATE_parser_prod___ASuperclass___empty_init};
-  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;
-  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, 1381, LOCATE_parser_prod___ASuperclass___init_asuperclass};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  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;
-  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=*/;
-  }
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ASuperclass].i] = 1;
-  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, 1396, 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, 1398); 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, 1402); 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, 1412); 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;
-  }
-  return_label148: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___ASuperclass___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 1421, LOCATE_parser_prod___ASuperclass___visit_all};
-  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*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___ASuperclass___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 1431, 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*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AAttrPropdef___n_doc__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 1442, LOCATE_parser_prod___AAttrPropdef___n_doc__eq};
-  val_t variable0;
-  val_t variable1;
-  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=*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AAttrPropdef___n_readable__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 1449, LOCATE_parser_prod___AAttrPropdef___n_readable__eq};
-  val_t variable0;
-  val_t variable1;
-  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=*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AAttrPropdef___n_writable__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 1456, LOCATE_parser_prod___AAttrPropdef___n_writable__eq};
-  val_t variable0;
-  val_t variable1;
-  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=*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AAttrPropdef___n_kwredef__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 1463, LOCATE_parser_prod___AAttrPropdef___n_kwredef__eq};
-  val_t variable0;
-  val_t variable1;
-  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=*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AAttrPropdef___n_visibility__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 1470, LOCATE_parser_prod___AAttrPropdef___n_visibility__eq};
-  val_t variable0;
-  val_t variable1;
-  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=*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AAttrPropdef___n_kwattr__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 1477, LOCATE_parser_prod___AAttrPropdef___n_kwattr__eq};
-  val_t variable0;
-  val_t variable1;
-  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=*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AAttrPropdef___n_id__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 1484, LOCATE_parser_prod___AAttrPropdef___n_id__eq};
-  val_t variable0;
-  val_t variable1;
-  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=*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AAttrPropdef___n_type__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 1491, LOCATE_parser_prod___AAttrPropdef___n_type__eq};
-  val_t variable0;
-  val_t variable1;
-  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=*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AAttrPropdef___n_expr__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 1498, LOCATE_parser_prod___AAttrPropdef___n_expr__eq};
-  val_t variable0;
-  val_t variable1;
-  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=*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AAttrPropdef___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 1506, LOCATE_parser_prod___AAttrPropdef___empty_init};
-  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;
-  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, 1508, 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;
-  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=*/;
-  }
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AAttrPropdef].i] = 1;
-  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, 1558, 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, 1560); 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, 1564); 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, 1574); 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, 1584); 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, 1594); 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, 1604); 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, 1614); 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, 1624); 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, 1634); 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, 1644); 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;
-  }
-  return_label162: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AAttrPropdef___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 1653, 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*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AAttrPropdef___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 1684, 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*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AMethPropdef___n_doc__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 1716, LOCATE_parser_prod___AMethPropdef___n_doc__eq};
-  val_t variable0;
-  val_t variable1;
-  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=*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AMethPropdef___n_kwredef__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 1723, LOCATE_parser_prod___AMethPropdef___n_kwredef__eq};
-  val_t variable0;
-  val_t variable1;
-  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=*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AMethPropdef___n_visibility__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 1730, LOCATE_parser_prod___AMethPropdef___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___AMethPropdef___n_methid__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 1737, LOCATE_parser_prod___AMethPropdef___n_methid__eq};
-  val_t variable0;
-  val_t variable1;
-  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=*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AMethPropdef___n_signature__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 1744, LOCATE_parser_prod___AMethPropdef___n_signature__eq};
-  val_t variable0;
-  val_t variable1;
-  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=*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AMethPropdef___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 1752, 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;
-  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, 1754, 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;
-  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;
-  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, 1784, 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, 1786); 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, 1790); 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, 1800); 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, 1810); 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, 1820); 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, 1830); 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;
-  }
-  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, 1839, LOCATE_parser_prod___AMethPropdef___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___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*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AMethPropdef___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 1858, LOCATE_parser_prod___AMethPropdef___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___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*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___ADeferredMethPropdef___n_doc__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 1878, LOCATE_parser_prod___ADeferredMethPropdef___n_doc__eq};
-  val_t variable0;
-  val_t variable1;
-  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=*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___ADeferredMethPropdef___n_kwredef__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 1885, LOCATE_parser_prod___ADeferredMethPropdef___n_kwredef__eq};
-  val_t variable0;
-  val_t variable1;
-  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=*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___ADeferredMethPropdef___n_visibility__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 1892, 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, 1899, LOCATE_parser_prod___ADeferredMethPropdef___n_kwmeth__eq};
-  val_t variable0;
-  val_t variable1;
-  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=*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___ADeferredMethPropdef___n_methid__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 1906, LOCATE_parser_prod___ADeferredMethPropdef___n_methid__eq};
-  val_t variable0;
-  val_t variable1;
-  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=*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___ADeferredMethPropdef___n_signature__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 1913, LOCATE_parser_prod___ADeferredMethPropdef___n_signature__eq};
-  val_t variable0;
-  val_t variable1;
-  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=*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___ADeferredMethPropdef___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 1921, LOCATE_parser_prod___ADeferredMethPropdef___empty_init};
-  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, 1923, 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___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*/;
-  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=*/;
-  }
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ADeferredMethPropdef].i] = 1;
-  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, 1958, 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, 1960); 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, 1964); 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, 1974); 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, 1984); 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, 1994); 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, 2004); 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, 2014); 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;
-  }
-  return_label183: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___ADeferredMethPropdef___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 2023, 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*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___ADeferredMethPropdef___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 2045, LOCATE_parser_prod___ADeferredMethPropdef___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___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*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AInternMethPropdef___n_doc__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 2068, LOCATE_parser_prod___AInternMethPropdef___n_doc__eq};
-  val_t variable0;
-  val_t variable1;
-  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=*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AInternMethPropdef___n_kwredef__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 2075, LOCATE_parser_prod___AInternMethPropdef___n_kwredef__eq};
-  val_t variable0;
-  val_t variable1;
-  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=*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AInternMethPropdef___n_visibility__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 2082, 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, 2089, LOCATE_parser_prod___AInternMethPropdef___n_kwmeth__eq};
-  val_t variable0;
-  val_t variable1;
-  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=*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AInternMethPropdef___n_methid__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 2096, LOCATE_parser_prod___AInternMethPropdef___n_methid__eq};
-  val_t variable0;
-  val_t variable1;
-  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=*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AInternMethPropdef___n_signature__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 2103, LOCATE_parser_prod___AInternMethPropdef___n_signature__eq};
-  val_t variable0;
-  val_t variable1;
-  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=*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AInternMethPropdef___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 2111, LOCATE_parser_prod___AInternMethPropdef___empty_init};
-  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, 2113, 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___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*/;
-  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=*/;
-  }
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AInternMethPropdef].i] = 1;
-  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, 2148, 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, 2150); 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, 2154); 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, 2164); 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, 2174); 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, 2184); 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, 2194); 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, 2204); 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;
-  }
-  return_label194: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AInternMethPropdef___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 2213, 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*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AInternMethPropdef___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 2235, LOCATE_parser_prod___AInternMethPropdef___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___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*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AExternMethPropdef___n_doc__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 2258, LOCATE_parser_prod___AExternMethPropdef___n_doc__eq};
-  val_t variable0;
-  val_t variable1;
-  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=*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AExternMethPropdef___n_kwredef__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 2265, LOCATE_parser_prod___AExternMethPropdef___n_kwredef__eq};
-  val_t variable0;
-  val_t variable1;
-  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=*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AExternMethPropdef___n_visibility__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 2272, 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, 2279, LOCATE_parser_prod___AExternMethPropdef___n_kwmeth__eq};
-  val_t variable0;
-  val_t variable1;
-  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=*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AExternMethPropdef___n_methid__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 2286, LOCATE_parser_prod___AExternMethPropdef___n_methid__eq};
-  val_t variable0;
-  val_t variable1;
-  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=*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AExternMethPropdef___n_signature__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 2293, LOCATE_parser_prod___AExternMethPropdef___n_signature__eq};
-  val_t variable0;
-  val_t variable1;
-  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=*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AExternMethPropdef___n_extern__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 2300, LOCATE_parser_prod___AExternMethPropdef___n_extern__eq};
-  val_t variable0;
-  val_t variable1;
-  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=*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AExternMethPropdef___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 2308, LOCATE_parser_prod___AExternMethPropdef___empty_init};
-  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, 2310, 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___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*/;
-  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=*/;
-  }
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AExternMethPropdef].i] = 1;
-  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, 2350, 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, 2352); 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, 2356); 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, 2366); 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, 2376); 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, 2386); 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, 2396); 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, 2406); 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, 2416); 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;
-  }
-  return_label206: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AExternMethPropdef___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 2425, 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*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AExternMethPropdef___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 2450, LOCATE_parser_prod___AExternMethPropdef___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___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*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AConcreteMethPropdef___n_doc__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 2476, LOCATE_parser_prod___AConcreteMethPropdef___n_doc__eq};
-  val_t variable0;
-  val_t variable1;
-  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=*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AConcreteMethPropdef___n_kwredef__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 2483, LOCATE_parser_prod___AConcreteMethPropdef___n_kwredef__eq};
-  val_t variable0;
-  val_t variable1;
-  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=*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AConcreteMethPropdef___n_visibility__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 2490, LOCATE_parser_prod___AConcreteMethPropdef___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___AConcreteMethPropdef___n_kwmeth__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 2497, 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=*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AConcreteMethPropdef___n_methid__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 2504, LOCATE_parser_prod___AConcreteMethPropdef___n_methid__eq};
-  val_t variable0;
-  val_t variable1;
-  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=*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AConcreteMethPropdef___n_signature__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 2511, LOCATE_parser_prod___AConcreteMethPropdef___n_signature__eq};
-  val_t variable0;
-  val_t variable1;
-  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=*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AConcreteMethPropdef___n_block__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 2518, LOCATE_parser_prod___AConcreteMethPropdef___n_block__eq};
-  val_t variable0;
-  val_t variable1;
-  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=*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AConcreteMethPropdef___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 2526, LOCATE_parser_prod___AConcreteMethPropdef___empty_init};
-  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, 2528, 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___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*/;
-  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=*/;
-  }
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AConcreteMethPropdef].i] = 1;
-  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, 2568, 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, 2570); 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, 2574); 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, 2584); 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, 2594); 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, 2604); 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, 2614); 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, 2624); 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, 2634); 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;
-  }
-  return_label218: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AConcreteMethPropdef___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 2643, 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*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AConcreteMethPropdef___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 2668, LOCATE_parser_prod___AConcreteMethPropdef___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___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*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AConcreteInitPropdef___n_doc__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 2694, LOCATE_parser_prod___AConcreteInitPropdef___n_doc__eq};
-  val_t variable0;
-  val_t variable1;
-  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=*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AConcreteInitPropdef___n_kwredef__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 2701, LOCATE_parser_prod___AConcreteInitPropdef___n_kwredef__eq};
-  val_t variable0;
-  val_t variable1;
-  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=*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AConcreteInitPropdef___n_visibility__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 2708, LOCATE_parser_prod___AConcreteInitPropdef___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___AConcreteInitPropdef___n_kwinit__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 2715, 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=*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AConcreteInitPropdef___n_methid__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 2722, LOCATE_parser_prod___AConcreteInitPropdef___n_methid__eq};
-  val_t variable0;
-  val_t variable1;
-  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=*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AConcreteInitPropdef___n_signature__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 2729, LOCATE_parser_prod___AConcreteInitPropdef___n_signature__eq};
-  val_t variable0;
-  val_t variable1;
-  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=*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AConcreteInitPropdef___n_block__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 2736, LOCATE_parser_prod___AConcreteInitPropdef___n_block__eq};
-  val_t variable0;
-  val_t variable1;
-  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=*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AConcreteInitPropdef___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 2744, LOCATE_parser_prod___AConcreteInitPropdef___empty_init};
-  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, 2746, 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___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___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=*/;
-  }
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AConcreteInitPropdef].i] = 1;
-  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, 2786, 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, 2788); 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, 2792); 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, 2802); 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, 2812); 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, 2822); 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, 2832); 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, 2842); 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, 2852); 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;
-  }
-  return_label230: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AConcreteInitPropdef___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 2861, 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*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AConcreteInitPropdef___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 2886, LOCATE_parser_prod___AConcreteInitPropdef___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___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*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AMainMethPropdef___n_kwredef__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 2912, LOCATE_parser_prod___AMainMethPropdef___n_kwredef__eq};
-  val_t variable0;
-  val_t variable1;
-  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=*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AMainMethPropdef___n_block__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 2919, LOCATE_parser_prod___AMainMethPropdef___n_block__eq};
-  val_t variable0;
-  val_t variable1;
-  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=*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AMainMethPropdef___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 2927, 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;
-  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, 2929, LOCATE_parser_prod___AMainMethPropdef___init_amainmethpropdef};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  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___AConcreteMethPropdef___empty_init_t)CALL( self,COLOR_parser_prod___AConcreteMethPropdef___empty_init))( self, init_table /*YYY*/) /*AConcreteMethPropdef::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=*/;
-  }
-  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=*/;
-  }
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AMainMethPropdef].i] = 1;
-  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, 2944, 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, 2946); 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, 2950); 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, 2960); 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;
-  }
-  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, 2969, LOCATE_parser_prod___AMainMethPropdef___visit_all};
-  val_t variable0;
-  val_t variable1;
-  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*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AMainMethPropdef___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 2979, LOCATE_parser_prod___AMainMethPropdef___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___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*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___ATypePropdef___n_doc__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 2990, LOCATE_parser_prod___ATypePropdef___n_doc__eq};
-  val_t variable0;
-  val_t variable1;
-  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=*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___ATypePropdef___n_kwredef__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 2997, LOCATE_parser_prod___ATypePropdef___n_kwredef__eq};
-  val_t variable0;
-  val_t variable1;
-  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=*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___ATypePropdef___n_visibility__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 3004, LOCATE_parser_prod___ATypePropdef___n_visibility__eq};
-  val_t variable0;
-  val_t variable1;
-  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=*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___ATypePropdef___n_kwtype__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 3011, LOCATE_parser_prod___ATypePropdef___n_kwtype__eq};
-  val_t variable0;
-  val_t variable1;
-  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=*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___ATypePropdef___n_id__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 3018, LOCATE_parser_prod___ATypePropdef___n_id__eq};
-  val_t variable0;
-  val_t variable1;
-  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=*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___ATypePropdef___n_type__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 3025, LOCATE_parser_prod___ATypePropdef___n_type__eq};
-  val_t variable0;
-  val_t variable1;
-  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=*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___ATypePropdef___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 3033, LOCATE_parser_prod___ATypePropdef___empty_init};
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ATypePropdef].i]) return;
-  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, 3035, 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;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ATypePropdef].i]) return;
-  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=*/;
-  }
-  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, 3070, 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, 3072); 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, 3076); 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, 3086); 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, 3096); 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, 3106); 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, 3116); 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, 3126); 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;
-  }
-  return_label248: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___ATypePropdef___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 3135, LOCATE_parser_prod___ATypePropdef___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___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*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___ATypePropdef___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 3157, 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*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AReadAble___n_kwredef__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 3180, LOCATE_parser_prod___AReadAble___n_kwredef__eq};
-  val_t variable0;
-  val_t variable1;
-  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=*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AReadAble___n_kwreadable__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 3187, 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=*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AReadAble___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 3195, LOCATE_parser_prod___AReadAble___empty_init};
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AReadAble].i]) return;
-  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, 3197, LOCATE_parser_prod___AReadAble___init_areadable};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 =  param1;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AReadAble].i]) return;
-  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=*/;
-  }
-  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, 3212, 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, 3214); 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, 3218); 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, 3228); 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;
-  }
-  return_label255: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AReadAble___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 3237, LOCATE_parser_prod___AReadAble___visit_all};
-  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*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AReadAble___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 3247, 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*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AWriteAble___n_kwredef__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 3258, LOCATE_parser_prod___AWriteAble___n_kwredef__eq};
-  val_t variable0;
-  val_t variable1;
-  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=*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AWriteAble___n_kwwritable__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 3265, 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=*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AWriteAble___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 3273, LOCATE_parser_prod___AWriteAble___empty_init};
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AWriteAble].i]) return;
-  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, 3275, LOCATE_parser_prod___AWriteAble___init_awriteable};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 =  param1;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AWriteAble].i]) return;
-  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=*/;
-  }
-  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, 3290, 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, 3292); 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, 3296); 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, 3306); 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, 3315, LOCATE_parser_prod___AWriteAble___visit_all};
-  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___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*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AWriteAble___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 3325, LOCATE_parser_prod___AWriteAble___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___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*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AIdMethid___n_id__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 3336, LOCATE_parser_prod___AIdMethid___n_id__eq};
-  val_t variable0;
-  val_t variable1;
-  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=*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AIdMethid___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 3344, LOCATE_parser_prod___AIdMethid___empty_init};
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AIdMethid].i]) return;
-  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, 3346, LOCATE_parser_prod___AIdMethid___init_aidmethid};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AIdMethid].i]) return;
-  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=*/;
-  }
-  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, 3356, LOCATE_parser_prod___AIdMethid___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___AIdMethid___replace_child, LOCATE_parser_prod, 3358); 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, 3362); 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;
-  }
-  return_label268: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AIdMethid___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 3371, 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*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AIdMethid___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 3378, LOCATE_parser_prod___AIdMethid___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___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*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___APlusMethid___n_plus__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 3386, LOCATE_parser_prod___APlusMethid___n_plus__eq};
-  val_t variable0;
-  val_t variable1;
-  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=*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___APlusMethid___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 3394, LOCATE_parser_prod___APlusMethid___empty_init};
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_APlusMethid].i]) return;
-  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, 3396, LOCATE_parser_prod___APlusMethid___init_aplusmethid};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_APlusMethid].i]) return;
-  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=*/;
-  }
-  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, 3406, LOCATE_parser_prod___APlusMethid___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___APlusMethid___replace_child, LOCATE_parser_prod, 3408); 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, 3412); 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;
-  }
-  return_label274: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___APlusMethid___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 3421, 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*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___APlusMethid___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 3428, LOCATE_parser_prod___APlusMethid___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___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*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AMinusMethid___n_minus__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 3436, LOCATE_parser_prod___AMinusMethid___n_minus__eq};
-  val_t variable0;
-  val_t variable1;
-  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=*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AMinusMethid___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 3444, LOCATE_parser_prod___AMinusMethid___empty_init};
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AMinusMethid].i]) return;
-  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, 3446, LOCATE_parser_prod___AMinusMethid___init_aminusmethid};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AMinusMethid].i]) return;
-  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=*/;
-  }
-  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, 3456, LOCATE_parser_prod___AMinusMethid___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___AMinusMethid___replace_child, LOCATE_parser_prod, 3458); 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, 3462); 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;
-  }
-  return_label280: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AMinusMethid___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 3471, 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*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AMinusMethid___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 3478, LOCATE_parser_prod___AMinusMethid___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___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*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AStarMethid___n_star__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 3486, LOCATE_parser_prod___AStarMethid___n_star__eq};
-  val_t variable0;
-  val_t variable1;
-  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=*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AStarMethid___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 3494, LOCATE_parser_prod___AStarMethid___empty_init};
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AStarMethid].i]) return;
-  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, 3496, LOCATE_parser_prod___AStarMethid___init_astarmethid};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AStarMethid].i]) return;
-  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=*/;
-  }
-  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, 3506, LOCATE_parser_prod___AStarMethid___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___AStarMethid___replace_child, LOCATE_parser_prod, 3508); 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, 3512); 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;
-  }
-  return_label286: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AStarMethid___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 3521, 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*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AStarMethid___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 3528, LOCATE_parser_prod___AStarMethid___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___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*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___ASlashMethid___n_slash__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 3536, LOCATE_parser_prod___ASlashMethid___n_slash__eq};
-  val_t variable0;
-  val_t variable1;
-  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=*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___ASlashMethid___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 3544, LOCATE_parser_prod___ASlashMethid___empty_init};
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ASlashMethid].i]) return;
-  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, 3546, LOCATE_parser_prod___ASlashMethid___init_aslashmethid};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ASlashMethid].i]) return;
-  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=*/;
-  }
-  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, 3556, LOCATE_parser_prod___ASlashMethid___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___ASlashMethid___replace_child, LOCATE_parser_prod, 3558); 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, 3562); 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;
-  }
-  return_label292: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___ASlashMethid___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 3571, 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*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___ASlashMethid___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 3578, LOCATE_parser_prod___ASlashMethid___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___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*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___APercentMethid___n_percent__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 3586, LOCATE_parser_prod___APercentMethid___n_percent__eq};
-  val_t variable0;
-  val_t variable1;
-  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=*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___APercentMethid___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 3594, LOCATE_parser_prod___APercentMethid___empty_init};
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_APercentMethid].i]) return;
-  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, 3596, LOCATE_parser_prod___APercentMethid___init_apercentmethid};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_APercentMethid].i]) return;
-  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=*/;
-  }
-  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, 3606, LOCATE_parser_prod___APercentMethid___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___APercentMethid___replace_child, LOCATE_parser_prod, 3608); 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, 3612); 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;
-  }
-  return_label298: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___APercentMethid___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 3621, 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*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___APercentMethid___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 3628, LOCATE_parser_prod___APercentMethid___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___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*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AEqMethid___n_eq__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 3636, LOCATE_parser_prod___AEqMethid___n_eq__eq};
-  val_t variable0;
-  val_t variable1;
-  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=*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AEqMethid___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 3644, LOCATE_parser_prod___AEqMethid___empty_init};
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AEqMethid].i]) return;
-  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, 3646, LOCATE_parser_prod___AEqMethid___init_aeqmethid};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AEqMethid].i]) return;
-  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=*/;
-  }
-  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, 3656, LOCATE_parser_prod___AEqMethid___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___AEqMethid___replace_child, LOCATE_parser_prod, 3658); 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, 3662); 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;
-  }
-  return_label304: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AEqMethid___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 3671, 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*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AEqMethid___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 3678, LOCATE_parser_prod___AEqMethid___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___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*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___ANeMethid___n_ne__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 3686, LOCATE_parser_prod___ANeMethid___n_ne__eq};
-  val_t variable0;
-  val_t variable1;
-  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=*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___ANeMethid___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 3694, LOCATE_parser_prod___ANeMethid___empty_init};
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ANeMethid].i]) return;
-  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, 3696, LOCATE_parser_prod___ANeMethid___init_anemethid};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ANeMethid].i]) return;
-  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=*/;
-  }
-  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, 3706, LOCATE_parser_prod___ANeMethid___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___ANeMethid___replace_child, LOCATE_parser_prod, 3708); 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, 3712); 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;
-  }
-  return_label310: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___ANeMethid___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 3721, 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*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___ANeMethid___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 3728, LOCATE_parser_prod___ANeMethid___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___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*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___ALeMethid___n_le__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 3736, LOCATE_parser_prod___ALeMethid___n_le__eq};
-  val_t variable0;
-  val_t variable1;
-  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=*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___ALeMethid___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 3744, LOCATE_parser_prod___ALeMethid___empty_init};
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ALeMethid].i]) return;
-  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, 3746, LOCATE_parser_prod___ALeMethid___init_alemethid};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ALeMethid].i]) return;
-  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=*/;
-  }
-  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, 3756, LOCATE_parser_prod___ALeMethid___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___ALeMethid___replace_child, LOCATE_parser_prod, 3758); 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, 3762); 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;
-  }
-  return_label316: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___ALeMethid___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 3771, 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*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___ALeMethid___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 3778, LOCATE_parser_prod___ALeMethid___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___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*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AGeMethid___n_ge__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 3786, LOCATE_parser_prod___AGeMethid___n_ge__eq};
-  val_t variable0;
-  val_t variable1;
-  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=*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AGeMethid___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 3794, LOCATE_parser_prod___AGeMethid___empty_init};
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AGeMethid].i]) return;
-  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, 3796, LOCATE_parser_prod___AGeMethid___init_agemethid};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AGeMethid].i]) return;
-  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=*/;
-  }
-  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, 3806, LOCATE_parser_prod___AGeMethid___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___AGeMethid___replace_child, LOCATE_parser_prod, 3808); 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, 3812); 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;
-  }
-  return_label322: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AGeMethid___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 3821, 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*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AGeMethid___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 3828, LOCATE_parser_prod___AGeMethid___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___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*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___ALtMethid___n_lt__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 3836, LOCATE_parser_prod___ALtMethid___n_lt__eq};
-  val_t variable0;
-  val_t variable1;
-  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=*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___ALtMethid___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 3844, LOCATE_parser_prod___ALtMethid___empty_init};
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ALtMethid].i]) return;
-  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, 3846, LOCATE_parser_prod___ALtMethid___init_altmethid};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ALtMethid].i]) return;
-  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=*/;
-  }
-  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, 3856, LOCATE_parser_prod___ALtMethid___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___ALtMethid___replace_child, LOCATE_parser_prod, 3858); 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, 3862); 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;
-  }
-  return_label328: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___ALtMethid___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 3871, 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*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___ALtMethid___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 3878, LOCATE_parser_prod___ALtMethid___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___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*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AGtMethid___n_gt__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 3886, LOCATE_parser_prod___AGtMethid___n_gt__eq};
-  val_t variable0;
-  val_t variable1;
-  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=*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AGtMethid___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 3894, LOCATE_parser_prod___AGtMethid___empty_init};
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AGtMethid].i]) return;
-  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, 3896, LOCATE_parser_prod___AGtMethid___init_agtmethid};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AGtMethid].i]) return;
-  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=*/;
-  }
-  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, 3906, LOCATE_parser_prod___AGtMethid___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___AGtMethid___replace_child, LOCATE_parser_prod, 3908); 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, 3912); 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;
-  }
-  return_label334: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AGtMethid___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 3921, LOCATE_parser_prod___AGtMethid___visit_all};
-  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*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AGtMethid___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 3928, 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*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___ABraMethid___n_obra__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 3936, LOCATE_parser_prod___ABraMethid___n_obra__eq};
-  val_t variable0;
-  val_t variable1;
-  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=*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___ABraMethid___n_cbra__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 3943, 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=*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___ABraMethid___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 3951, LOCATE_parser_prod___ABraMethid___empty_init};
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ABraMethid].i]) return;
-  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, 3953, LOCATE_parser_prod___ABraMethid___init_abramethid};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 =  param1;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ABraMethid].i]) return;
-  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=*/;
-  }
-  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, 3968, 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, 3970); 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, 3974); 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, 3984); 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;
-  }
-  return_label341: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___ABraMethid___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 3993, 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*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___ABraMethid___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 4003, LOCATE_parser_prod___ABraMethid___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___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*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AStarshipMethid___n_starship__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 4014, LOCATE_parser_prod___AStarshipMethid___n_starship__eq};
-  val_t variable0;
-  val_t variable1;
-  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=*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AStarshipMethid___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 4022, LOCATE_parser_prod___AStarshipMethid___empty_init};
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AStarshipMethid].i]) return;
-  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, 4024, LOCATE_parser_prod___AStarshipMethid___init_astarshipmethid};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AStarshipMethid].i]) return;
-  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=*/;
-  }
-  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, 4034, LOCATE_parser_prod___AStarshipMethid___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___AStarshipMethid___replace_child, LOCATE_parser_prod, 4036); 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, 4040); 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;
-  }
-  return_label347: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AStarshipMethid___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 4049, LOCATE_parser_prod___AStarshipMethid___visit_all};
-  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*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AStarshipMethid___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 4056, 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*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AAssignMethid___n_id__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 4064, LOCATE_parser_prod___AAssignMethid___n_id__eq};
-  val_t variable0;
-  val_t variable1;
-  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=*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AAssignMethid___n_assign__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 4071, 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=*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AAssignMethid___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 4079, LOCATE_parser_prod___AAssignMethid___empty_init};
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AAssignMethid].i]) return;
-  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, 4081, LOCATE_parser_prod___AAssignMethid___init_aassignmethid};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 =  param1;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AAssignMethid].i]) return;
-  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=*/;
-  }
-  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, 4096, 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, 4098); 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, 4102); 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, 4112); 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;
-  }
-  return_label354: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AAssignMethid___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 4121, LOCATE_parser_prod___AAssignMethid___visit_all};
-  val_t variable0;
-  val_t variable1;
-  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*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AAssignMethid___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 4131, LOCATE_parser_prod___AAssignMethid___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___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*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___ABraassignMethid___n_obra__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 4142, 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=*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___ABraassignMethid___n_cbra__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 4149, LOCATE_parser_prod___ABraassignMethid___n_cbra__eq};
-  val_t variable0;
-  val_t variable1;
-  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=*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___ABraassignMethid___n_assign__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 4156, 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=*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___ABraassignMethid___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 4164, LOCATE_parser_prod___ABraassignMethid___empty_init};
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ABraassignMethid].i]) return;
-  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, 4166, LOCATE_parser_prod___ABraassignMethid___init_abraassignmethid};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  val_t variable3;
-  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_ABraassignMethid].i]) return;
-  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=*/;
-  }
-  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, 4186, 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, 4188); 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, 4192); 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, 4202); 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, 4212); 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;
-  }
-  return_label362: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___ABraassignMethid___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 4221, 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*/;
-  }
-  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*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___ABraassignMethid___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 4234, LOCATE_parser_prod___ABraassignMethid___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___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*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___ASignature___n_type__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 4248, LOCATE_parser_prod___ASignature___n_type__eq};
-  val_t variable0;
-  val_t variable1;
-  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=*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___ASignature___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 4256, LOCATE_parser_prod___ASignature___empty_init};
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ASignature].i]) return;
-  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) {
-  struct trace_t trace = {NULL, NULL, 4258, LOCATE_parser_prod___ASignature___init_asignature};
-  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;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ASignature].i]) return;
-  variable2 = NEW_list___List___init(); /*new List[E]*/
-  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*/;
-  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, 4265); 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=*/;
-  }
-  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, 4275, 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, 4277); 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___without_last( TAG_Int(0), variable2); /*new Range[E]*/
-  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, 4281); 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, 4293); 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;
-  }
-  return_label369: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___ASignature___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 4302, LOCATE_parser_prod___ASignature___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___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*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___ASignature___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 4312, LOCATE_parser_prod___ASignature___visit_all_reverse};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  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*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AParam___n_id__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 4327, 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=*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AParam___n_type__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 4334, LOCATE_parser_prod___AParam___n_type__eq};
-  val_t variable0;
-  val_t variable1;
-  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=*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AParam___n_dotdotdot__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 4341, LOCATE_parser_prod___AParam___n_dotdotdot__eq};
-  val_t variable0;
-  val_t variable1;
-  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=*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AParam___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 4349, LOCATE_parser_prod___AParam___empty_init};
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AParam].i]) return;
-  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, 4351, LOCATE_parser_prod___AParam___init_aparam};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  val_t variable3;
-  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_AParam].i]) return;
-  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=*/;
-  }
-  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, 4371, 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, 4373); 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, 4377); 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, 4387); 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, 4397); 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;
-  }
-  return_label380: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AParam___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 4406, LOCATE_parser_prod___AParam___visit_all};
-  val_t variable0;
-  val_t variable1;
-  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*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AParam___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 4419, LOCATE_parser_prod___AParam___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___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*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AType___n_id__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 4433, LOCATE_parser_prod___AType___n_id__eq};
-  val_t variable0;
-  val_t variable1;
-  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=*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AType___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 4441, LOCATE_parser_prod___AType___empty_init};
-  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;
-  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, 4443, LOCATE_parser_prod___AType___init_atype};
-  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;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AType].i]) return;
-  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___init(); /*new List[E]*/
-  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, 4454); 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;
-  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, 4460, 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, 4462); 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, 4466); 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___without_last( TAG_Int(0), variable2); /*new Range[E]*/
-  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___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, 4476); 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=*/;
-      } 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*/;
-      }
-      goto return_label387;
-    }
-    continue_388: while(0);
-    ((abstract_collection___Iterator___next_t)CALL(variable2,COLOR_abstract_collection___Iterator___next))(variable2) /*Iterator::next*/;
-  }
-  break_388: while(0);
-  return_label387: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AType___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 4487, 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*/;
-  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*/;
-  }
-  break_390: while(0);
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AType___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 4497, 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;
-  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);
-  }
-  break_392: while(0);
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___ABlockExpr___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 4513, LOCATE_parser_prod___ABlockExpr___empty_init};
-  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;
-  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, 4515, LOCATE_parser_prod___ABlockExpr___init_ablockexpr};
-  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_ABlockExpr].i]) return;
-  variable1 = NEW_list___List___init(); /*new List[E]*/
-  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*/;
-  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, 4521); 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;
-  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, 4527, 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, 4529); 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___without_last( TAG_Int(0), variable2); /*new Range[E]*/
-  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___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, 4533); 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=*/;
-      } 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*/;
-      }
-      goto return_label396;
-    }
-    continue_397: while(0);
-    ((abstract_collection___Iterator___next_t)CALL(variable2,COLOR_abstract_collection___Iterator___next))(variable2) /*Iterator::next*/;
-  }
-  break_397: while(0);
-  return_label396: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___ABlockExpr___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 4544, LOCATE_parser_prod___ABlockExpr___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___ABlockExpr____n_expr( self) /*ABlockExpr::_n_expr*/;
-  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_399: while(0);
-    ((list___ListIterator___next_t)CALL(variable1,COLOR_abstract_collection___Iterator___next))(variable1) /*ListIterator::next*/;
-  }
-  break_399: while(0);
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___ABlockExpr___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 4551, LOCATE_parser_prod___ABlockExpr___visit_all_reverse};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  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;
-  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);
-  }
-  break_401: while(0);
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AVardeclExpr___n_kwvar__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 4563, LOCATE_parser_prod___AVardeclExpr___n_kwvar__eq};
-  val_t variable0;
-  val_t variable1;
-  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=*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AVardeclExpr___n_id__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 4570, LOCATE_parser_prod___AVardeclExpr___n_id__eq};
-  val_t variable0;
-  val_t variable1;
-  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=*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AVardeclExpr___n_type__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 4577, LOCATE_parser_prod___AVardeclExpr___n_type__eq};
-  val_t variable0;
-  val_t variable1;
-  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=*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AVardeclExpr___n_assign__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 4584, LOCATE_parser_prod___AVardeclExpr___n_assign__eq};
-  val_t variable0;
-  val_t variable1;
-  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=*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AVardeclExpr___n_expr__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 4591, LOCATE_parser_prod___AVardeclExpr___n_expr__eq};
-  val_t variable0;
-  val_t variable1;
-  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=*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AVardeclExpr___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 4599, LOCATE_parser_prod___AVardeclExpr___empty_init};
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AVardeclExpr].i]) return;
-  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, 4601, 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;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AVardeclExpr].i]) return;
-  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=*/;
-  }
-  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, 4631, 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, 4633); 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, 4637); 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, 4647); 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, 4657); 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, 4667); 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, 4677); 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, 4686, LOCATE_parser_prod___AVardeclExpr___visit_all};
-  val_t variable0;
-  val_t variable1;
-  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*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AVardeclExpr___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 4705, LOCATE_parser_prod___AVardeclExpr___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___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*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AReturnExpr___n_kwreturn__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 4725, 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=*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AReturnExpr___n_expr__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 4732, LOCATE_parser_prod___AReturnExpr___n_expr__eq};
-  val_t variable0;
-  val_t variable1;
-  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=*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AReturnExpr___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 4740, LOCATE_parser_prod___AReturnExpr___empty_init};
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AReturnExpr].i]) return;
-  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, 4742, LOCATE_parser_prod___AReturnExpr___init_areturnexpr};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 =  param1;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AReturnExpr].i]) return;
-  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=*/;
-  }
-  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, 4757, 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, 4759); 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, 4763); 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, 4773); 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;
-  }
-  return_label416: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AReturnExpr___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 4782, LOCATE_parser_prod___AReturnExpr___visit_all};
-  val_t variable0;
-  val_t variable1;
-  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*/;
-  }
-  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*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AReturnExpr___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 4792, LOCATE_parser_prod___AReturnExpr___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___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*/;
-  }
-  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*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___ABreakExpr___n_kwbreak__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 4803, LOCATE_parser_prod___ABreakExpr___n_kwbreak__eq};
-  val_t variable0;
-  val_t variable1;
-  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=*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___ABreakExpr___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 4811, LOCATE_parser_prod___ABreakExpr___empty_init};
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ABreakExpr].i]) return;
-  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, 4813, LOCATE_parser_prod___ABreakExpr___init_abreakexpr};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ABreakExpr].i]) return;
-  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=*/;
-  }
-  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, 4823, 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, 4825); 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, 4829); 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;
-  }
-  return_label422: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___ABreakExpr___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 4838, 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*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___ABreakExpr___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 4845, LOCATE_parser_prod___ABreakExpr___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___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*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AAbortExpr___n_kwabort__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 4853, LOCATE_parser_prod___AAbortExpr___n_kwabort__eq};
-  val_t variable0;
-  val_t variable1;
-  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=*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AAbortExpr___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 4861, LOCATE_parser_prod___AAbortExpr___empty_init};
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AAbortExpr].i]) return;
-  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, 4863, LOCATE_parser_prod___AAbortExpr___init_aabortexpr};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AAbortExpr].i]) return;
-  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=*/;
-  }
-  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, 4873, 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, 4875); 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, 4879); 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;
-  }
-  return_label428: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AAbortExpr___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 4888, LOCATE_parser_prod___AAbortExpr___visit_all};
-  val_t variable0;
-  val_t variable1;
-  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*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AAbortExpr___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 4895, LOCATE_parser_prod___AAbortExpr___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___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*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AContinueExpr___n_kwcontinue__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 4903, LOCATE_parser_prod___AContinueExpr___n_kwcontinue__eq};
-  val_t variable0;
-  val_t variable1;
-  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=*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AContinueExpr___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 4911, LOCATE_parser_prod___AContinueExpr___empty_init};
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AContinueExpr].i]) return;
-  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, 4913, LOCATE_parser_prod___AContinueExpr___init_acontinueexpr};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AContinueExpr].i]) return;
-  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=*/;
-  }
-  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, 4923, 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, 4925); 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, 4929); 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;
-  }
-  return_label434: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AContinueExpr___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 4938, LOCATE_parser_prod___AContinueExpr___visit_all};
-  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*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AContinueExpr___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 4945, 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*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___ADoExpr___n_kwdo__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 4953, LOCATE_parser_prod___ADoExpr___n_kwdo__eq};
-  val_t variable0;
-  val_t variable1;
-  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=*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___ADoExpr___n_block__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 4960, LOCATE_parser_prod___ADoExpr___n_block__eq};
-  val_t variable0;
-  val_t variable1;
-  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=*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___ADoExpr___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 4968, LOCATE_parser_prod___ADoExpr___empty_init};
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ADoExpr].i]) return;
-  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, 4970, LOCATE_parser_prod___ADoExpr___init_adoexpr};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 =  param1;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ADoExpr].i]) return;
-  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=*/;
-  }
-  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, 4985, 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, 4987); 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, 4991); 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, 5001); 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, 5010, 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, 5020, 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, 5031, LOCATE_parser_prod___AIfExpr___n_kwif__eq};
-  val_t variable0;
-  val_t variable1;
-  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=*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AIfExpr___n_expr__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 5038, LOCATE_parser_prod___AIfExpr___n_expr__eq};
-  val_t variable0;
-  val_t variable1;
-  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=*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AIfExpr___n_then__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 5045, LOCATE_parser_prod___AIfExpr___n_then__eq};
-  val_t variable0;
-  val_t variable1;
-  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=*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AIfExpr___n_else__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 5052, LOCATE_parser_prod___AIfExpr___n_else__eq};
-  val_t variable0;
-  val_t variable1;
-  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=*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AIfExpr___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 5060, 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, 5062, 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;
-  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=*/;
-  }
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AIfExpr].i] = 1;
-  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, 5087, 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, 5089); 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, 5093); 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, 5103); 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, 5113); 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, 5123); 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);
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AIfExpr___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 5132, LOCATE_parser_prod___AIfExpr___visit_all};
-  val_t variable0;
-  val_t variable1;
-  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*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AIfExpr___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 5148, LOCATE_parser_prod___AIfExpr___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___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*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AIfexprExpr___n_kwif__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 5165, LOCATE_parser_prod___AIfexprExpr___n_kwif__eq};
-  val_t variable0;
-  val_t variable1;
-  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=*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AIfexprExpr___n_expr__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 5172, LOCATE_parser_prod___AIfexprExpr___n_expr__eq};
-  val_t variable0;
-  val_t variable1;
-  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=*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AIfexprExpr___n_kwthen__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 5179, LOCATE_parser_prod___AIfexprExpr___n_kwthen__eq};
-  val_t variable0;
-  val_t variable1;
-  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=*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AIfexprExpr___n_then__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 5186, LOCATE_parser_prod___AIfexprExpr___n_then__eq};
-  val_t variable0;
-  val_t variable1;
-  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=*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AIfexprExpr___n_kwelse__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 5193, LOCATE_parser_prod___AIfexprExpr___n_kwelse__eq};
-  val_t variable0;
-  val_t variable1;
-  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=*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AIfexprExpr___n_else__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 5200, LOCATE_parser_prod___AIfexprExpr___n_else__eq};
-  val_t variable0;
-  val_t variable1;
-  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=*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AIfexprExpr___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 5208, LOCATE_parser_prod___AIfexprExpr___empty_init};
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AIfexprExpr].i]) return;
-  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, 5210, 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;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AIfexprExpr].i]) return;
-  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=*/;
-  }
-  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, 5245, 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, 5247); 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, 5251); 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, 5261); 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, 5271); 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, 5281); 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, 5291); 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, 5301); 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;
-  }
-  return_label461: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AIfexprExpr___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 5310, LOCATE_parser_prod___AIfexprExpr___visit_all};
-  val_t variable0;
-  val_t variable1;
-  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*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AIfexprExpr___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 5332, LOCATE_parser_prod___AIfexprExpr___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___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*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AWhileExpr___n_kwwhile__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 5355, LOCATE_parser_prod___AWhileExpr___n_kwwhile__eq};
-  val_t variable0;
-  val_t variable1;
-  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=*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AWhileExpr___n_expr__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 5362, 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=*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AWhileExpr___n_kwdo__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 5369, 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=*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AWhileExpr___n_block__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 5376, 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=*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AWhileExpr___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 5384, LOCATE_parser_prod___AWhileExpr___empty_init};
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AWhileExpr].i]) return;
-  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, 5386, 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;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AWhileExpr].i]) return;
-  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=*/;
-  }
-  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, 5411, 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, 5413); 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, 5417); 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, 5427); 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, 5437); 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, 5447); 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;
-  }
-  return_label470: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AWhileExpr___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 5456, LOCATE_parser_prod___AWhileExpr___visit_all};
-  val_t variable0;
-  val_t variable1;
-  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*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AWhileExpr___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 5472, LOCATE_parser_prod___AWhileExpr___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___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*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AForExpr___n_vardecl__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 5489, 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=*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AForExpr___n_kwdo__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 5496, LOCATE_parser_prod___AForExpr___n_kwdo__eq};
-  val_t variable0;
-  val_t variable1;
-  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=*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AForExpr___n_block__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 5503, LOCATE_parser_prod___AForExpr___n_block__eq};
-  val_t variable0;
-  val_t variable1;
-  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=*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AForExpr___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 5511, LOCATE_parser_prod___AForExpr___empty_init};
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AForExpr].i]) return;
-  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, 5513, LOCATE_parser_prod___AForExpr___init_aforexpr};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  val_t variable3;
-  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_AForExpr].i]) return;
-  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=*/;
-  }
-  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, 5533, 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, 5535); 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, 5539); 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, 5549); 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, 5559); 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;
-  }
-  return_label478: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AForExpr___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 5568, LOCATE_parser_prod___AForExpr___visit_all};
-  val_t variable0;
-  val_t variable1;
-  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*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AForExpr___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 5581, LOCATE_parser_prod___AForExpr___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___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*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AForVardeclExpr___n_kwfor__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 5595, 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=*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AForVardeclExpr___n_id__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 5602, LOCATE_parser_prod___AForVardeclExpr___n_id__eq};
-  val_t variable0;
-  val_t variable1;
-  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=*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AForVardeclExpr___n_expr__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 5609, 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=*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AForVardeclExpr___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 5617, LOCATE_parser_prod___AForVardeclExpr___empty_init};
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AForVardeclExpr].i]) return;
-  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, 5619, LOCATE_parser_prod___AForVardeclExpr___init_aforvardeclexpr};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  val_t variable3;
-  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_AForVardeclExpr].i]) return;
-  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=*/;
-  }
-  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, 5639, 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, 5641); 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, 5645); 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, 5655); 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, 5665); 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;
-  }
-  return_label486: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AForVardeclExpr___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 5674, LOCATE_parser_prod___AForVardeclExpr___visit_all};
-  val_t variable0;
-  val_t variable1;
-  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*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AForVardeclExpr___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 5687, LOCATE_parser_prod___AForVardeclExpr___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___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*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AAssertExpr___n_kwassert__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 5701, 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=*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AAssertExpr___n_id__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 5708, LOCATE_parser_prod___AAssertExpr___n_id__eq};
-  val_t variable0;
-  val_t variable1;
-  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=*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AAssertExpr___n_expr__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 5715, LOCATE_parser_prod___AAssertExpr___n_expr__eq};
-  val_t variable0;
-  val_t variable1;
-  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=*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AAssertExpr___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 5723, LOCATE_parser_prod___AAssertExpr___empty_init};
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AAssertExpr].i]) return;
-  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, 5725, LOCATE_parser_prod___AAssertExpr___init_aassertexpr};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  val_t variable3;
-  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_AAssertExpr].i]) return;
-  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=*/;
-  }
-  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, 5745, 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, 5747); 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, 5751); 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, 5761); 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, 5771); 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;
-  }
-  return_label494: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AAssertExpr___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 5780, LOCATE_parser_prod___AAssertExpr___visit_all};
-  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*/;
-  }
-  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*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AAssertExpr___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 5793, 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*/;
-  }
-  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*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AOnceExpr___n_kwonce__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 5807, LOCATE_parser_prod___AOnceExpr___n_kwonce__eq};
-  val_t variable0;
-  val_t variable1;
-  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=*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AOnceExpr___n_expr__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 5814, LOCATE_parser_prod___AOnceExpr___n_expr__eq};
-  val_t variable0;
-  val_t variable1;
-  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=*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AOnceExpr___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 5822, LOCATE_parser_prod___AOnceExpr___empty_init};
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AOnceExpr].i]) return;
-  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, 5824, LOCATE_parser_prod___AOnceExpr___init_aonceexpr};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 =  param1;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AOnceExpr].i]) return;
-  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=*/;
-  }
-  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, 5839, 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, 5841); 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, 5845); 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, 5855); 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;
-  }
-  return_label501: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AOnceExpr___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 5864, 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*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AOnceExpr___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 5874, LOCATE_parser_prod___AOnceExpr___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___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*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___ASendExpr___n_expr__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 5885, LOCATE_parser_prod___ASendExpr___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=*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___ASendExpr___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 5893, LOCATE_parser_prod___ASendExpr___empty_init};
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ASendExpr].i]) return;
-  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, 5895, LOCATE_parser_prod___ASendExpr___init_asendexpr};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ASendExpr].i]) return;
-  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=*/;
-  }
-  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, 5905, 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, 5907); 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, 5911); 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;
-  }
-  return_label507: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___ASendExpr___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 5920, LOCATE_parser_prod___ASendExpr___visit_all};
-  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*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___ASendExpr___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 5927, 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*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___ABinopExpr___n_expr__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 5935, 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=*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___ABinopExpr___n_expr2__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 5942, LOCATE_parser_prod___ABinopExpr___n_expr2__eq};
-  val_t variable0;
-  val_t variable1;
-  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=*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___ABinopExpr___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 5950, LOCATE_parser_prod___ABinopExpr___empty_init};
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  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*/;
-  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, 5952, LOCATE_parser_prod___ABinopExpr___init_abinopexpr};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 =  param1;
-  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*/;
-  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=*/;
-  }
-  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, 5967, 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, 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___ABinopExpr___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_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, 5983); 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;
-  }
-  return_label514: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___ABinopExpr___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 5992, LOCATE_parser_prod___ABinopExpr___visit_all};
-  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*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___ABinopExpr___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 6002, 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*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AOrExpr___n_expr__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 6013, 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=*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AOrExpr___n_expr2__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 6020, LOCATE_parser_prod___AOrExpr___n_expr2__eq};
-  val_t variable0;
-  val_t variable1;
-  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=*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AOrExpr___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 6028, LOCATE_parser_prod___AOrExpr___empty_init};
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AOrExpr].i]) return;
-  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, 6030, LOCATE_parser_prod___AOrExpr___init_aorexpr};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 =  param1;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AOrExpr].i]) return;
-  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=*/;
-  }
-  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, 6045, 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, 6047); 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, 6051); 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, 6061); 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;
-  }
-  return_label521: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AOrExpr___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 6070, LOCATE_parser_prod___AOrExpr___visit_all};
-  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*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AOrExpr___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 6080, 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*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AAndExpr___n_expr__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 6091, 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=*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AAndExpr___n_expr2__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 6098, LOCATE_parser_prod___AAndExpr___n_expr2__eq};
-  val_t variable0;
-  val_t variable1;
-  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=*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AAndExpr___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 6106, LOCATE_parser_prod___AAndExpr___empty_init};
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AAndExpr].i]) return;
-  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, 6108, LOCATE_parser_prod___AAndExpr___init_aandexpr};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 =  param1;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AAndExpr].i]) return;
-  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=*/;
-  }
-  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, 6123, 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, 6125); 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, 6129); 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, 6139); 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;
-  }
-  return_label528: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AAndExpr___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 6148, LOCATE_parser_prod___AAndExpr___visit_all};
-  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*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AAndExpr___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 6158, 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*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___ANotExpr___n_kwnot__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 6169, 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=*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___ANotExpr___n_expr__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 6176, LOCATE_parser_prod___ANotExpr___n_expr__eq};
-  val_t variable0;
-  val_t variable1;
-  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=*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___ANotExpr___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 6184, LOCATE_parser_prod___ANotExpr___empty_init};
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ANotExpr].i]) return;
-  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, 6186, LOCATE_parser_prod___ANotExpr___init_anotexpr};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 =  param1;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ANotExpr].i]) return;
-  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=*/;
-  }
-  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, 6201, 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, 6203); 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, 6207); 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, 6217); 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;
-  }
-  return_label535: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___ANotExpr___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 6226, LOCATE_parser_prod___ANotExpr___visit_all};
-  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*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___ANotExpr___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 6236, 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*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AEqExpr___n_expr__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 6247, 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=*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AEqExpr___n_expr2__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 6254, LOCATE_parser_prod___AEqExpr___n_expr2__eq};
-  val_t variable0;
-  val_t variable1;
-  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=*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AEqExpr___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 6262, LOCATE_parser_prod___AEqExpr___empty_init};
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  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*/;
-  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, 6264, LOCATE_parser_prod___AEqExpr___init_aeqexpr};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 =  param1;
-  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*/;
-  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=*/;
-  }
-  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, 6279, 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, 6281); 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, 6285); 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, 6295); 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;
-  }
-  return_label542: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AEqExpr___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 6304, LOCATE_parser_prod___AEqExpr___visit_all};
-  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*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AEqExpr___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 6314, 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*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AEeExpr___n_expr__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 6325, 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=*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AEeExpr___n_expr2__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 6332, LOCATE_parser_prod___AEeExpr___n_expr2__eq};
-  val_t variable0;
-  val_t variable1;
-  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=*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AEeExpr___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 6340, LOCATE_parser_prod___AEeExpr___empty_init};
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AEeExpr].i]) return;
-  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, 6342, LOCATE_parser_prod___AEeExpr___init_aeeexpr};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 =  param1;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AEeExpr].i]) return;
-  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=*/;
-  }
-  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, 6357, 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, 6359); 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, 6363); 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, 6373); 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;
-  }
-  return_label549: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AEeExpr___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 6382, LOCATE_parser_prod___AEeExpr___visit_all};
-  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*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AEeExpr___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 6392, 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*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___ANeExpr___n_expr__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 6403, 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=*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___ANeExpr___n_expr2__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 6410, LOCATE_parser_prod___ANeExpr___n_expr2__eq};
-  val_t variable0;
-  val_t variable1;
-  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=*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___ANeExpr___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 6418, LOCATE_parser_prod___ANeExpr___empty_init};
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  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*/;
-  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, 6420, LOCATE_parser_prod___ANeExpr___init_aneexpr};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 =  param1;
-  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*/;
-  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=*/;
-  }
-  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, 6435, 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, 6437); 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, 6441); 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, 6451); 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;
-  }
-  return_label556: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___ANeExpr___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 6460, LOCATE_parser_prod___ANeExpr___visit_all};
-  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*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___ANeExpr___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 6470, 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*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___ALtExpr___n_expr__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 6481, 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=*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___ALtExpr___n_expr2__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 6488, LOCATE_parser_prod___ALtExpr___n_expr2__eq};
-  val_t variable0;
-  val_t variable1;
-  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=*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___ALtExpr___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 6496, LOCATE_parser_prod___ALtExpr___empty_init};
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  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*/;
-  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, 6498, LOCATE_parser_prod___ALtExpr___init_altexpr};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 =  param1;
-  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*/;
-  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=*/;
-  }
-  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, 6513, 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, 6515); 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, 6519); 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, 6529); 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;
-  }
-  return_label563: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___ALtExpr___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 6538, LOCATE_parser_prod___ALtExpr___visit_all};
-  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*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___ALtExpr___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 6548, 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*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___ALeExpr___n_expr__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 6559, 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=*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___ALeExpr___n_expr2__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 6566, LOCATE_parser_prod___ALeExpr___n_expr2__eq};
-  val_t variable0;
-  val_t variable1;
-  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=*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___ALeExpr___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 6574, LOCATE_parser_prod___ALeExpr___empty_init};
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  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*/;
-  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, 6576, LOCATE_parser_prod___ALeExpr___init_aleexpr};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 =  param1;
-  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*/;
-  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=*/;
-  }
-  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, 6591, 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, 6593); 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, 6597); 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, 6607); 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;
-  }
-  return_label570: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___ALeExpr___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 6616, LOCATE_parser_prod___ALeExpr___visit_all};
-  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*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___ALeExpr___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 6626, 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*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AGtExpr___n_expr__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 6637, 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=*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AGtExpr___n_expr2__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 6644, LOCATE_parser_prod___AGtExpr___n_expr2__eq};
-  val_t variable0;
-  val_t variable1;
-  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=*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AGtExpr___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 6652, LOCATE_parser_prod___AGtExpr___empty_init};
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  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*/;
-  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, 6654, LOCATE_parser_prod___AGtExpr___init_agtexpr};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 =  param1;
-  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*/;
-  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=*/;
-  }
-  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, 6669, 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, 6671); 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, 6675); 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, 6685); 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, 6694, LOCATE_parser_prod___AGtExpr___visit_all};
-  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*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AGtExpr___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 6704, LOCATE_parser_prod___AGtExpr___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*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AGeExpr___n_expr__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 6715, 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=*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AGeExpr___n_expr2__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 6722, LOCATE_parser_prod___AGeExpr___n_expr2__eq};
-  val_t variable0;
-  val_t variable1;
-  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=*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AGeExpr___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 6730, LOCATE_parser_prod___AGeExpr___empty_init};
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  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*/;
-  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, 6732, LOCATE_parser_prod___AGeExpr___init_ageexpr};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 =  param1;
-  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*/;
-  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=*/;
-  }
-  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, 6747, 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, 6749); 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, 6753); 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, 6763); 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;
-  }
-  return_label584: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AGeExpr___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 6772, LOCATE_parser_prod___AGeExpr___visit_all};
-  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*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AGeExpr___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 6782, 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*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AIsaExpr___n_expr__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 6793, 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=*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AIsaExpr___n_type__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 6800, LOCATE_parser_prod___AIsaExpr___n_type__eq};
-  val_t variable0;
-  val_t variable1;
-  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=*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AIsaExpr___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 6808, LOCATE_parser_prod___AIsaExpr___empty_init};
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AIsaExpr].i]) return;
-  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, 6810, LOCATE_parser_prod___AIsaExpr___init_aisaexpr};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 =  param1;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AIsaExpr].i]) return;
-  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=*/;
-  }
-  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, 6825, 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, 6827); 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, 6831); 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, 6841); 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;
-  }
-  return_label591: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AIsaExpr___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 6850, LOCATE_parser_prod___AIsaExpr___visit_all};
-  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*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AIsaExpr___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 6860, 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*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___APlusExpr___n_expr__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 6871, 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=*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___APlusExpr___n_expr2__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 6878, LOCATE_parser_prod___APlusExpr___n_expr2__eq};
-  val_t variable0;
-  val_t variable1;
-  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=*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___APlusExpr___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 6886, LOCATE_parser_prod___APlusExpr___empty_init};
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  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*/;
-  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, 6888, LOCATE_parser_prod___APlusExpr___init_aplusexpr};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 =  param1;
-  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*/;
-  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=*/;
-  }
-  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, 6903, 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, 6905); 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, 6909); 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, 6919); 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;
-  }
-  return_label598: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___APlusExpr___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 6928, LOCATE_parser_prod___APlusExpr___visit_all};
-  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*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___APlusExpr___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 6938, 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*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AMinusExpr___n_expr__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 6949, 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=*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AMinusExpr___n_expr2__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 6956, LOCATE_parser_prod___AMinusExpr___n_expr2__eq};
-  val_t variable0;
-  val_t variable1;
-  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=*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AMinusExpr___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 6964, LOCATE_parser_prod___AMinusExpr___empty_init};
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  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*/;
-  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, 6966, LOCATE_parser_prod___AMinusExpr___init_aminusexpr};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 =  param1;
-  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*/;
-  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=*/;
-  }
-  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, 6981, 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, 6983); 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, 6987); 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, 6997); 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;
-  }
-  return_label605: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AMinusExpr___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 7006, LOCATE_parser_prod___AMinusExpr___visit_all};
-  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*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AMinusExpr___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 7016, 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*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AStarshipExpr___n_expr__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 7027, 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=*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AStarshipExpr___n_expr2__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 7034, LOCATE_parser_prod___AStarshipExpr___n_expr2__eq};
-  val_t variable0;
-  val_t variable1;
-  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=*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AStarshipExpr___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 7042, LOCATE_parser_prod___AStarshipExpr___empty_init};
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  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*/;
-  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, 7044, LOCATE_parser_prod___AStarshipExpr___init_astarshipexpr};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 =  param1;
-  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*/;
-  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=*/;
-  }
-  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, 7059, 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, 7061); 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, 7065); 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, 7075); 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;
-  }
-  return_label612: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AStarshipExpr___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 7084, LOCATE_parser_prod___AStarshipExpr___visit_all};
-  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*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AStarshipExpr___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 7094, 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*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AStarExpr___n_expr__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 7105, 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=*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AStarExpr___n_expr2__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 7112, LOCATE_parser_prod___AStarExpr___n_expr2__eq};
-  val_t variable0;
-  val_t variable1;
-  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=*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AStarExpr___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 7120, LOCATE_parser_prod___AStarExpr___empty_init};
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  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*/;
-  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, 7122, LOCATE_parser_prod___AStarExpr___init_astarexpr};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 =  param1;
-  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*/;
-  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=*/;
-  }
-  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, 7137, 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, 7139); 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, 7143); 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, 7153); 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;
-  }
-  return_label619: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AStarExpr___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 7162, LOCATE_parser_prod___AStarExpr___visit_all};
-  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*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AStarExpr___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 7172, 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*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___ASlashExpr___n_expr__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 7183, 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=*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___ASlashExpr___n_expr2__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 7190, LOCATE_parser_prod___ASlashExpr___n_expr2__eq};
-  val_t variable0;
-  val_t variable1;
-  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=*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___ASlashExpr___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 7198, LOCATE_parser_prod___ASlashExpr___empty_init};
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  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*/;
-  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, 7200, LOCATE_parser_prod___ASlashExpr___init_aslashexpr};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 =  param1;
-  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*/;
-  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=*/;
-  }
-  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, 7215, 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, 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___ASlashExpr___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_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, 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_label626;
-  }
-  return_label626: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___ASlashExpr___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 7240, LOCATE_parser_prod___ASlashExpr___visit_all};
-  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*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___ASlashExpr___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 7250, 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*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___APercentExpr___n_expr__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 7261, LOCATE_parser_prod___APercentExpr___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=*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___APercentExpr___n_expr2__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 7268, LOCATE_parser_prod___APercentExpr___n_expr2__eq};
-  val_t variable0;
-  val_t variable1;
-  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=*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___APercentExpr___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 7276, LOCATE_parser_prod___APercentExpr___empty_init};
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  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*/;
-  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, 7278, LOCATE_parser_prod___APercentExpr___init_apercentexpr};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 =  param1;
-  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*/;
-  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=*/;
-  }
-  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, 7293, 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, 7295); 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, 7299); 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, 7309); 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;
-  }
-  return_label633: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___APercentExpr___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 7318, LOCATE_parser_prod___APercentExpr___visit_all};
-  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*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___APercentExpr___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 7328, 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*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AUminusExpr___n_minus__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 7339, LOCATE_parser_prod___AUminusExpr___n_minus__eq};
-  val_t variable0;
-  val_t variable1;
-  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=*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AUminusExpr___n_expr__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 7346, LOCATE_parser_prod___AUminusExpr___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=*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AUminusExpr___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 7354, LOCATE_parser_prod___AUminusExpr___empty_init};
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  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*/;
-  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, 7356, LOCATE_parser_prod___AUminusExpr___init_auminusexpr};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 =  param1;
-  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*/;
-  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=*/;
-  }
-  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, 7371, 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, 7373); 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, 7377); 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, 7387); 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, 7396, 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, 7406, 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, 7417, 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, 7424, LOCATE_parser_prod___ANewExpr___n_type__eq};
-  val_t variable0;
-  val_t variable1;
-  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=*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___ANewExpr___n_id__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 7431, LOCATE_parser_prod___ANewExpr___n_id__eq};
-  val_t variable0;
-  val_t variable1;
-  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=*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___ANewExpr___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 7439, LOCATE_parser_prod___ANewExpr___empty_init};
-  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, 7441, 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;
-  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___init(); /*new List[E]*/
-  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, 7462); 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;
-  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, 7468, 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, 7470); 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, 7474); 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, 7484); 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, 7494); 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___without_last( TAG_Int(0), variable2); /*new Range[E]*/
-  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___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, 7504); 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=*/;
-      } 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*/;
-      }
-      goto return_label649;
-    }
-    continue_650: while(0);
-    ((abstract_collection___Iterator___next_t)CALL(variable2,COLOR_abstract_collection___Iterator___next))(variable2) /*Iterator::next*/;
-  }
-  break_650: while(0);
-  return_label649: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___ANewExpr___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 7515, 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*/;
-  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*/;
-  }
-  break_652: while(0);
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___ANewExpr___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 7531, 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;
-  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);
-  }
-  break_654: while(0);
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AAttrExpr___n_expr__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 7552, LOCATE_parser_prod___AAttrExpr___n_expr__eq};
-  val_t variable0;
-  val_t variable1;
-  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=*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AAttrExpr___n_id__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 7559, LOCATE_parser_prod___AAttrExpr___n_id__eq};
-  val_t variable0;
-  val_t variable1;
-  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=*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AAttrExpr___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 7567, LOCATE_parser_prod___AAttrExpr___empty_init};
-  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;
-  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, 7569, LOCATE_parser_prod___AAttrExpr___init_aattrexpr};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  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;
-  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=*/;
-  }
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AAttrExpr].i] = 1;
-  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, 7584, 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, 7586); 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, 7590); 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, 7600); 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;
-  }
-  return_label659: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AAttrExpr___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 7609, LOCATE_parser_prod___AAttrExpr___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*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AAttrExpr___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 7619, LOCATE_parser_prod___AAttrExpr___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*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AAttrAssignExpr___n_expr__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 7630, LOCATE_parser_prod___AAttrAssignExpr___n_expr__eq};
-  val_t variable0;
-  val_t variable1;
-  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=*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AAttrAssignExpr___n_id__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 7637, LOCATE_parser_prod___AAttrAssignExpr___n_id__eq};
-  val_t variable0;
-  val_t variable1;
-  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=*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AAttrAssignExpr___n_assign__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 7644, LOCATE_parser_prod___AAttrAssignExpr___n_assign__eq};
-  val_t variable0;
-  val_t variable1;
-  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=*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AAttrAssignExpr___n_value__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 7651, LOCATE_parser_prod___AAttrAssignExpr___n_value__eq};
-  val_t variable0;
-  val_t variable1;
-  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=*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AAttrAssignExpr___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 7659, LOCATE_parser_prod___AAttrAssignExpr___empty_init};
-  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;
-  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, 7661, 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;
-  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=*/;
-  }
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AAttrAssignExpr].i] = 1;
-  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, 7686, 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, 7688); 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, 7692); 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, 7702); 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, 7712); 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, 7722); 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;
-  }
-  return_label668: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AAttrAssignExpr___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 7731, 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*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AAttrAssignExpr___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 7747, 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*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AAttrReassignExpr___n_expr__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 7764, LOCATE_parser_prod___AAttrReassignExpr___n_expr__eq};
-  val_t variable0;
-  val_t variable1;
-  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=*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AAttrReassignExpr___n_id__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 7771, LOCATE_parser_prod___AAttrReassignExpr___n_id__eq};
-  val_t variable0;
-  val_t variable1;
-  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=*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AAttrReassignExpr___n_assign_op__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 7778, LOCATE_parser_prod___AAttrReassignExpr___n_assign_op__eq};
-  val_t variable0;
-  val_t variable1;
-  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=*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AAttrReassignExpr___n_value__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 7785, LOCATE_parser_prod___AAttrReassignExpr___n_value__eq};
-  val_t variable0;
-  val_t variable1;
-  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=*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AAttrReassignExpr___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 7793, LOCATE_parser_prod___AAttrReassignExpr___empty_init};
-  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;
-  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, 7795, 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;
-  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=*/;
-  }
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AAttrReassignExpr].i] = 1;
-  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, 7820, 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, 7822); 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, 7826); 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, 7836); 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, 7846); 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, 7856); 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;
-  }
-  return_label677: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AAttrReassignExpr___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 7865, 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*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AAttrReassignExpr___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 7881, 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*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___ACallExpr___n_expr__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 7898, LOCATE_parser_prod___ACallExpr___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=*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___ACallExpr___n_id__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 7905, LOCATE_parser_prod___ACallExpr___n_id__eq};
-  val_t variable0;
-  val_t variable1;
-  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=*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___ACallExpr___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 7913, LOCATE_parser_prod___ACallExpr___empty_init};
-  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;
-  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, 7915, LOCATE_parser_prod___ACallExpr___init_acallexpr};
-  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_ACallExpr].i]) return;
-  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___init(); /*new List[E]*/
-  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, 7931); 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;
-  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, 7937, 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, 7939); 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, 7943); 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, 7953); 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___without_last( TAG_Int(0), variable2); /*new Range[E]*/
-  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___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, 7963); 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=*/;
-      } 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*/;
-      }
-      goto return_label685;
-    }
-    continue_686: while(0);
-    ((abstract_collection___Iterator___next_t)CALL(variable2,COLOR_abstract_collection___Iterator___next))(variable2) /*Iterator::next*/;
-  }
-  break_686: while(0);
-  return_label685: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___ACallExpr___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 7974, 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*/;
-  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*/;
-  }
-  break_688: while(0);
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___ACallExpr___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 7987, 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;
-  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);
-  }
-  break_690: while(0);
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___ACallAssignExpr___n_expr__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 8005, LOCATE_parser_prod___ACallAssignExpr___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=*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___ACallAssignExpr___n_id__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 8012, LOCATE_parser_prod___ACallAssignExpr___n_id__eq};
-  val_t variable0;
-  val_t variable1;
-  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=*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___ACallAssignExpr___n_assign__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 8019, LOCATE_parser_prod___ACallAssignExpr___n_assign__eq};
-  val_t variable0;
-  val_t variable1;
-  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=*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___ACallAssignExpr___n_value__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 8026, LOCATE_parser_prod___ACallAssignExpr___n_value__eq};
-  val_t variable0;
-  val_t variable1;
-  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=*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___ACallAssignExpr___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 8034, LOCATE_parser_prod___ACallAssignExpr___empty_init};
-  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;
-  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, 8036, 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;
-  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___init(); /*new List[E]*/
-  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, 8054); 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=*/;
-  }
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ACallAssignExpr].i] = 1;
-  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, 8068, 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, 8070); 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, 8074); 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, 8084); 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___without_last( TAG_Int(0), variable2); /*new Range[E]*/
-  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___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, 8094); 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=*/;
-      } 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*/;
-      }
-      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, 8106); 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_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, 8116); 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_label698;
-  }
-  return_label698: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___ACallAssignExpr___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 8125, 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*/;
-  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*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___ACallAssignExpr___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 8144, 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;
-  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*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___ACallReassignExpr___n_expr__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 8168, LOCATE_parser_prod___ACallReassignExpr___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=*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___ACallReassignExpr___n_id__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 8175, LOCATE_parser_prod___ACallReassignExpr___n_id__eq};
-  val_t variable0;
-  val_t variable1;
-  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=*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___ACallReassignExpr___n_assign_op__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 8182, LOCATE_parser_prod___ACallReassignExpr___n_assign_op__eq};
-  val_t variable0;
-  val_t variable1;
-  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=*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___ACallReassignExpr___n_value__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 8189, LOCATE_parser_prod___ACallReassignExpr___n_value__eq};
-  val_t variable0;
-  val_t variable1;
-  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=*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___ACallReassignExpr___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 8197, LOCATE_parser_prod___ACallReassignExpr___empty_init};
-  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;
-  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, 8199, 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;
-  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___init(); /*new List[E]*/
-  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, 8217); 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=*/;
-  }
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ACallReassignExpr].i] = 1;
-  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, 8231, 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, 8233); 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, 8237); 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, 8247); 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___without_last( TAG_Int(0), variable2); /*new Range[E]*/
-  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___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, 8257); 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=*/;
-      } 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*/;
-      }
-      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, 8269); 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_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, 8279); 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_label711;
-  }
-  return_label711: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___ACallReassignExpr___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 8288, 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*/;
-  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*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___ACallReassignExpr___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 8307, 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;
-  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);
-  }
-  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*/;
-  }
-  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*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___ASuperExpr___n_qualified__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 8331, LOCATE_parser_prod___ASuperExpr___n_qualified__eq};
-  val_t variable0;
-  val_t variable1;
-  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=*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___ASuperExpr___n_kwsuper__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 8338, LOCATE_parser_prod___ASuperExpr___n_kwsuper__eq};
-  val_t variable0;
-  val_t variable1;
-  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=*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___ASuperExpr___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 8346, LOCATE_parser_prod___ASuperExpr___empty_init};
-  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;
-  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, 8348, 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;
-  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___init(); /*new List[E]*/
-  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, 8364); 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;
-  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, 8370, 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, 8372); 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, 8376); 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, 8386); 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___without_last( TAG_Int(0), variable2); /*new Range[E]*/
-  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___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, 8396); 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=*/;
-      } 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*/;
-      }
-      goto return_label722;
-    }
-    continue_723: while(0);
-    ((abstract_collection___Iterator___next_t)CALL(variable2,COLOR_abstract_collection___Iterator___next))(variable2) /*Iterator::next*/;
-  }
-  break_723: while(0);
-  return_label722: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___ASuperExpr___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 8407, 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*/;
-  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*/;
-  }
-  break_725: while(0);
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___ASuperExpr___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 8420, 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;
-  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);
-  }
-  break_727: while(0);
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AInitExpr___n_expr__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 8438, LOCATE_parser_prod___AInitExpr___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=*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AInitExpr___n_kwinit__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 8445, LOCATE_parser_prod___AInitExpr___n_kwinit__eq};
-  val_t variable0;
-  val_t variable1;
-  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=*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AInitExpr___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 8453, LOCATE_parser_prod___AInitExpr___empty_init};
-  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;
-  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, 8455, 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___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*/;
-  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___init(); /*new List[E]*/
-  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, 8471); 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*/;
-  }
-  break_732: while(0);
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AInitExpr].i] = 1;
-  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, 8477, 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, 8479); 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, 8483); 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, 8493); 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___without_last( TAG_Int(0), variable2); /*new Range[E]*/
-  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___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, 8503); 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=*/;
-      } 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*/;
-      }
-      goto return_label733;
-    }
-    continue_734: while(0);
-    ((abstract_collection___Iterator___next_t)CALL(variable2,COLOR_abstract_collection___Iterator___next))(variable2) /*Iterator::next*/;
-  }
-  break_734: while(0);
-  return_label733: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AInitExpr___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 8514, 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*/;
-  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*/;
-  }
-  break_736: while(0);
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AInitExpr___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 8527, 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;
-  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);
-  }
-  break_738: while(0);
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___ABraExpr___n_expr__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 8545, LOCATE_parser_prod___ABraExpr___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=*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___ABraExpr___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 8553, LOCATE_parser_prod___ABraExpr___empty_init};
-  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;
-  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, 8555, LOCATE_parser_prod___ABraExpr___init_abraexpr};
-  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;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ABraExpr].i]) return;
-  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___init(); /*new List[E]*/
-  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, 8566); 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;
-  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, 8572, 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, 8574); 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, 8578); 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___without_last( TAG_Int(0), variable2); /*new Range[E]*/
-  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___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, 8588); 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=*/;
-      } 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*/;
-      }
-      goto return_label743;
-    }
-    continue_744: while(0);
-    ((abstract_collection___Iterator___next_t)CALL(variable2,COLOR_abstract_collection___Iterator___next))(variable2) /*Iterator::next*/;
-  }
-  break_744: while(0);
-  return_label743: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___ABraExpr___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 8599, 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*/;
-  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*/;
-  }
-  break_746: while(0);
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___ABraExpr___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 8609, 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;
-  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);
-  }
-  break_748: while(0);
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___ABraAssignExpr___n_expr__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 8624, LOCATE_parser_prod___ABraAssignExpr___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=*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___ABraAssignExpr___n_assign__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 8631, LOCATE_parser_prod___ABraAssignExpr___n_assign__eq};
-  val_t variable0;
-  val_t variable1;
-  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=*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___ABraAssignExpr___n_value__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 8638, LOCATE_parser_prod___ABraAssignExpr___n_value__eq};
-  val_t variable0;
-  val_t variable1;
-  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=*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___ABraAssignExpr___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 8646, LOCATE_parser_prod___ABraAssignExpr___empty_init};
-  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;
-  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, 8648, 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;
-  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___init(); /*new List[E]*/
-  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, 8661); 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=*/;
-  }
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ABraAssignExpr].i] = 1;
-  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, 8675, 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, 8677); 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, 8681); 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___without_last( TAG_Int(0), variable2); /*new Range[E]*/
-  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___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, 8691); 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=*/;
-      } 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*/;
-      }
-      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, 8703); 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_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, 8713); 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_label755;
-  }
-  return_label755: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___ABraAssignExpr___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 8722, 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*/;
-  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*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___ABraAssignExpr___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 8738, 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;
-  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*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___ABraReassignExpr___n_expr__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 8759, LOCATE_parser_prod___ABraReassignExpr___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=*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___ABraReassignExpr___n_assign_op__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 8766, LOCATE_parser_prod___ABraReassignExpr___n_assign_op__eq};
-  val_t variable0;
-  val_t variable1;
-  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=*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___ABraReassignExpr___n_value__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 8773, LOCATE_parser_prod___ABraReassignExpr___n_value__eq};
-  val_t variable0;
-  val_t variable1;
-  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=*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___ABraReassignExpr___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 8781, LOCATE_parser_prod___ABraReassignExpr___empty_init};
-  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;
-  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, 8783, 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;
-  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___init(); /*new List[E]*/
-  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, 8796); 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=*/;
-  }
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ABraReassignExpr].i] = 1;
-  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, 8810, 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, 8812); 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, 8816); 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___without_last( TAG_Int(0), variable2); /*new Range[E]*/
-  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___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, 8826); 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=*/;
-      } 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*/;
-      }
-      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, 8838); 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_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, 8848); 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_label767;
-  }
-  return_label767: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___ABraReassignExpr___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 8857, 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*/;
-  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*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___ABraReassignExpr___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 8873, 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;
-  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*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AVarExpr___n_id__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 8894, LOCATE_parser_prod___AVarExpr___n_id__eq};
-  val_t variable0;
-  val_t variable1;
-  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=*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AVarExpr___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 8902, LOCATE_parser_prod___AVarExpr___empty_init};
-  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;
-  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, 8904, LOCATE_parser_prod___AVarExpr___init_avarexpr};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AVarExpr].i]) return;
-  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=*/;
-  }
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AVarExpr].i] = 1;
-  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, 8914, 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, 8916); 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, 8920); 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_label776;
-  }
-  return_label776: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AVarExpr___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 8929, LOCATE_parser_prod___AVarExpr___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*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AVarExpr___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 8936, LOCATE_parser_prod___AVarExpr___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___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*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AVarAssignExpr___n_id__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 8944, LOCATE_parser_prod___AVarAssignExpr___n_id__eq};
-  val_t variable0;
-  val_t variable1;
-  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=*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AVarAssignExpr___n_assign__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 8951, LOCATE_parser_prod___AVarAssignExpr___n_assign__eq};
-  val_t variable0;
-  val_t variable1;
-  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=*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AVarAssignExpr___n_value__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 8958, LOCATE_parser_prod___AVarAssignExpr___n_value__eq};
-  val_t variable0;
-  val_t variable1;
-  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=*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AVarAssignExpr___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 8966, LOCATE_parser_prod___AVarAssignExpr___empty_init};
-  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;
-  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, 8968, LOCATE_parser_prod___AVarAssignExpr___init_avarassignexpr};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  val_t variable3;
-  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;
-  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=*/;
-  }
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AVarAssignExpr].i] = 1;
-  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, 8988, 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, 8990); 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, 8994); 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, 9004); 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, 9014); 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;
-  }
-  return_label784: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AVarAssignExpr___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 9023, 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*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AVarAssignExpr___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 9036, LOCATE_parser_prod___AVarAssignExpr___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___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*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AVarReassignExpr___n_id__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 9050, LOCATE_parser_prod___AVarReassignExpr___n_id__eq};
-  val_t variable0;
-  val_t variable1;
-  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=*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AVarReassignExpr___n_assign_op__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 9057, LOCATE_parser_prod___AVarReassignExpr___n_assign_op__eq};
-  val_t variable0;
-  val_t variable1;
-  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=*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AVarReassignExpr___n_value__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 9064, LOCATE_parser_prod___AVarReassignExpr___n_value__eq};
-  val_t variable0;
-  val_t variable1;
-  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=*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AVarReassignExpr___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 9072, LOCATE_parser_prod___AVarReassignExpr___empty_init};
-  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;
-  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, 9074, LOCATE_parser_prod___AVarReassignExpr___init_avarreassignexpr};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  val_t variable3;
-  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;
-  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=*/;
-  }
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AVarReassignExpr].i] = 1;
-  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, 9094, 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, 9096); 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, 9100); 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_label792;
-  }
-  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, 9110); 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_label792;
-  }
-  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, 9120); 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_label792;
-  }
-  return_label792: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AVarReassignExpr___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 9129, LOCATE_parser_prod___AVarReassignExpr___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___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*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AVarReassignExpr___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 9142, LOCATE_parser_prod___AVarReassignExpr___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___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___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*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___ARangeExpr___n_expr__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 9156, LOCATE_parser_prod___ARangeExpr___n_expr__eq};
-  val_t variable0;
-  val_t variable1;
-  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=*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___ARangeExpr___n_expr2__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 9163, LOCATE_parser_prod___ARangeExpr___n_expr2__eq};
-  val_t variable0;
-  val_t variable1;
-  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=*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___ARangeExpr___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 9171, LOCATE_parser_prod___ARangeExpr___empty_init};
-  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;
-  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, 9173, LOCATE_parser_prod___ARangeExpr___init_arangeexpr};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  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;
-  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=*/;
-  }
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ARangeExpr].i] = 1;
-  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, 9188, 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, 9190); 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, 9194); 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, 9204); 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;
-  }
-  return_label799: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___ARangeExpr___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 9213, LOCATE_parser_prod___ARangeExpr___visit_all};
-  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*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___ARangeExpr___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 9223, LOCATE_parser_prod___ARangeExpr___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*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___ACrangeExpr___n_expr__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 9234, LOCATE_parser_prod___ACrangeExpr___n_expr__eq};
-  val_t variable0;
-  val_t variable1;
-  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=*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___ACrangeExpr___n_expr2__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 9241, LOCATE_parser_prod___ACrangeExpr___n_expr2__eq};
-  val_t variable0;
-  val_t variable1;
-  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=*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___ACrangeExpr___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 9249, LOCATE_parser_prod___ACrangeExpr___empty_init};
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  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*/;
-  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, 9251, LOCATE_parser_prod___ACrangeExpr___init_acrangeexpr};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 =  param1;
-  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*/;
-  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=*/;
-  }
-  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, 9266, 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, 9268); 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, 9272); 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, 9282); 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;
-  }
-  return_label806: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___ACrangeExpr___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 9291, LOCATE_parser_prod___ACrangeExpr___visit_all};
-  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*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___ACrangeExpr___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 9301, 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*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AOrangeExpr___n_expr__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 9312, LOCATE_parser_prod___AOrangeExpr___n_expr__eq};
-  val_t variable0;
-  val_t variable1;
-  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=*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AOrangeExpr___n_expr2__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 9319, LOCATE_parser_prod___AOrangeExpr___n_expr2__eq};
-  val_t variable0;
-  val_t variable1;
-  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=*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AOrangeExpr___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 9327, LOCATE_parser_prod___AOrangeExpr___empty_init};
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  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*/;
-  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, 9329, LOCATE_parser_prod___AOrangeExpr___init_aorangeexpr};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 =  param1;
-  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*/;
-  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=*/;
-  }
-  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, 9344, 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, 9346); 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, 9350); 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, 9360); 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_label813;
-  }
-  return_label813: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AOrangeExpr___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 9369, LOCATE_parser_prod___AOrangeExpr___visit_all};
-  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*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AOrangeExpr___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 9379, LOCATE_parser_prod___AOrangeExpr___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*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AArrayExpr___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 9391, LOCATE_parser_prod___AArrayExpr___empty_init};
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AArrayExpr].i]) return;
-  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, 9393, LOCATE_parser_prod___AArrayExpr___init_aarrayexpr};
-  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_AArrayExpr].i]) return;
-  variable1 = NEW_list___List___init(); /*new List[E]*/
-  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*/;
-  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, 9399); 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);
-  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, 9405, 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, 9407); 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___without_last( TAG_Int(0), variable2); /*new Range[E]*/
-  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, 9411); 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*/;
-  }
-  break_820: while(0);
-  return_label819: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AArrayExpr___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 9422, 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*/;
-  }
-  break_822: while(0);
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AArrayExpr___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 9429, LOCATE_parser_prod___AArrayExpr___visit_all_reverse};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  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);
-  }
-  break_824: while(0);
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___ASelfExpr___n_kwself__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 9441, LOCATE_parser_prod___ASelfExpr___n_kwself__eq};
-  val_t variable0;
-  val_t variable1;
-  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=*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___ASelfExpr___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 9449, LOCATE_parser_prod___ASelfExpr___empty_init};
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ASelfExpr].i]) return;
-  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, 9451, LOCATE_parser_prod___ASelfExpr___init_aselfexpr};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ASelfExpr].i]) return;
-  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=*/;
-  }
-  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, 9461, 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, 9463); 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, 9467); 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);
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___ASelfExpr___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 9476, LOCATE_parser_prod___ASelfExpr___visit_all};
-  val_t variable0;
-  val_t variable1;
-  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*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___ASelfExpr___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 9483, LOCATE_parser_prod___ASelfExpr___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___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*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AImplicitSelfExpr___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 9492, LOCATE_parser_prod___AImplicitSelfExpr___empty_init};
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  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*/;
-  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, 9494, LOCATE_parser_prod___AImplicitSelfExpr___init_aimplicitselfexpr};
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  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*/;
-  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, 9498, LOCATE_parser_prod___AImplicitSelfExpr___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___AImplicitSelfExpr___replace_child, LOCATE_parser_prod, 9500); nit_exit(1);}
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AImplicitSelfExpr___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 9503, LOCATE_parser_prod___AImplicitSelfExpr___visit_all};
-  val_t variable0;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AImplicitSelfExpr___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 9507, LOCATE_parser_prod___AImplicitSelfExpr___visit_all_reverse};
-  val_t variable0;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___ATrueExpr___n_kwtrue__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 9512, LOCATE_parser_prod___ATrueExpr___n_kwtrue__eq};
-  val_t variable0;
-  val_t variable1;
-  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=*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___ATrueExpr___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 9520, LOCATE_parser_prod___ATrueExpr___empty_init};
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ATrueExpr].i]) return;
-  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, 9522, LOCATE_parser_prod___ATrueExpr___init_atrueexpr};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ATrueExpr].i]) return;
-  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=*/;
-  }
-  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, 9532, 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, 9534); 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, 9538); 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;
-  }
-  return_label839: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___ATrueExpr___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 9547, 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*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___ATrueExpr___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 9554, LOCATE_parser_prod___ATrueExpr___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___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*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AFalseExpr___n_kwfalse__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 9562, LOCATE_parser_prod___AFalseExpr___n_kwfalse__eq};
-  val_t variable0;
-  val_t variable1;
-  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=*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AFalseExpr___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 9570, LOCATE_parser_prod___AFalseExpr___empty_init};
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AFalseExpr].i]) return;
-  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, 9572, LOCATE_parser_prod___AFalseExpr___init_afalseexpr};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AFalseExpr].i]) return;
-  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=*/;
-  }
-  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, 9582, 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, 9584); 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, 9588); 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;
-  }
-  return_label845: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AFalseExpr___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 9597, 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*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AFalseExpr___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 9604, LOCATE_parser_prod___AFalseExpr___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___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*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___ANullExpr___n_kwnull__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 9612, LOCATE_parser_prod___ANullExpr___n_kwnull__eq};
-  val_t variable0;
-  val_t variable1;
-  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=*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___ANullExpr___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 9620, LOCATE_parser_prod___ANullExpr___empty_init};
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ANullExpr].i]) return;
-  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, 9622, LOCATE_parser_prod___ANullExpr___init_anullexpr};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ANullExpr].i]) return;
-  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=*/;
-  }
-  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, 9632, 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, 9634); 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, 9638); 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;
-  }
-  return_label851: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___ANullExpr___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 9647, 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*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___ANullExpr___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 9654, LOCATE_parser_prod___ANullExpr___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___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*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AIntExpr___n_number__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 9662, LOCATE_parser_prod___AIntExpr___n_number__eq};
-  val_t variable0;
-  val_t variable1;
-  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=*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AIntExpr___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 9670, LOCATE_parser_prod___AIntExpr___empty_init};
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AIntExpr].i]) return;
-  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, 9672, LOCATE_parser_prod___AIntExpr___init_aintexpr};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AIntExpr].i]) return;
-  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=*/;
-  }
-  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, 9682, 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, 9684); 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, 9688); 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;
-  }
-  return_label857: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AIntExpr___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 9697, 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*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AIntExpr___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 9704, LOCATE_parser_prod___AIntExpr___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___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*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AFloatExpr___n_float__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 9712, LOCATE_parser_prod___AFloatExpr___n_float__eq};
-  val_t variable0;
-  val_t variable1;
-  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=*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AFloatExpr___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 9720, LOCATE_parser_prod___AFloatExpr___empty_init};
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AFloatExpr].i]) return;
-  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, 9722, LOCATE_parser_prod___AFloatExpr___init_afloatexpr};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AFloatExpr].i]) return;
-  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, 9732, 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, 9734); 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, 9738); 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);
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AFloatExpr___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 9747, LOCATE_parser_prod___AFloatExpr___visit_all};
-  val_t variable0;
-  val_t variable1;
-  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*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AFloatExpr___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 9754, LOCATE_parser_prod___AFloatExpr___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___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*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___ACharExpr___n_char__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 9762, LOCATE_parser_prod___ACharExpr___n_char__eq};
-  val_t variable0;
-  val_t variable1;
-  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=*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___ACharExpr___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 9770, LOCATE_parser_prod___ACharExpr___empty_init};
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ACharExpr].i]) return;
-  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, 9772, LOCATE_parser_prod___ACharExpr___init_acharexpr};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ACharExpr].i]) return;
-  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=*/;
-  }
-  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, 9782, 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, 9784); 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, 9788); 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;
-  }
-  return_label869: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___ACharExpr___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 9797, 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*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___ACharExpr___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 9804, LOCATE_parser_prod___ACharExpr___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___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*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AStringExpr___n_string__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 9812, LOCATE_parser_prod___AStringExpr___n_string__eq};
-  val_t variable0;
-  val_t variable1;
-  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=*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AStringExpr___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 9820, LOCATE_parser_prod___AStringExpr___empty_init};
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AStringExpr].i]) return;
-  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, 9822, LOCATE_parser_prod___AStringExpr___init_astringexpr};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AStringExpr].i]) return;
-  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=*/;
-  }
-  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, 9832, 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, 9834); 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, 9838); 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;
-  }
-  return_label875: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AStringExpr___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 9847, 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*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AStringExpr___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 9854, LOCATE_parser_prod___AStringExpr___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___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*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AStartStringExpr___n_string__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 9862, LOCATE_parser_prod___AStartStringExpr___n_string__eq};
-  val_t variable0;
-  val_t variable1;
-  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=*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AStartStringExpr___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 9870, LOCATE_parser_prod___AStartStringExpr___empty_init};
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AStartStringExpr].i]) return;
-  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, 9872, LOCATE_parser_prod___AStartStringExpr___init_astartstringexpr};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AStartStringExpr].i]) return;
-  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=*/;
-  }
-  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, 9882, 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, 9884); 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, 9888); 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;
-  }
-  return_label881: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AStartStringExpr___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 9897, 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*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AStartStringExpr___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 9904, LOCATE_parser_prod___AStartStringExpr___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___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*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AMidStringExpr___n_string__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 9912, LOCATE_parser_prod___AMidStringExpr___n_string__eq};
-  val_t variable0;
-  val_t variable1;
-  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=*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AMidStringExpr___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 9920, LOCATE_parser_prod___AMidStringExpr___empty_init};
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AMidStringExpr].i]) return;
-  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, 9922, LOCATE_parser_prod___AMidStringExpr___init_amidstringexpr};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AMidStringExpr].i]) return;
-  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=*/;
-  }
-  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, 9932, 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, 9934); 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, 9938); 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;
-  }
-  return_label887: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AMidStringExpr___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 9947, 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*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AMidStringExpr___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 9954, LOCATE_parser_prod___AMidStringExpr___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___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*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AEndStringExpr___n_string__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 9962, LOCATE_parser_prod___AEndStringExpr___n_string__eq};
-  val_t variable0;
-  val_t variable1;
-  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=*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AEndStringExpr___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 9970, LOCATE_parser_prod___AEndStringExpr___empty_init};
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AEndStringExpr].i]) return;
-  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, 9972, LOCATE_parser_prod___AEndStringExpr___init_aendstringexpr};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AEndStringExpr].i]) return;
-  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=*/;
-  }
-  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, 9982, 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, 9984); 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, 9988); 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;
-  }
-  return_label893: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AEndStringExpr___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 9997, LOCATE_parser_prod___AEndStringExpr___visit_all};
-  val_t variable0;
-  val_t variable1;
-  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*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AEndStringExpr___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 10004, LOCATE_parser_prod___AEndStringExpr___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___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*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___ASuperstringExpr___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 10013, LOCATE_parser_prod___ASuperstringExpr___empty_init};
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ASuperstringExpr].i]) return;
-  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, 10015, LOCATE_parser_prod___ASuperstringExpr___init_asuperstringexpr};
-  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_ASuperstringExpr].i]) return;
-  variable1 = NEW_list___List___init(); /*new List[E]*/
-  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*/;
-  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, 10021); 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);
-  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, 10027, 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, 10029); 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___without_last( TAG_Int(0), variable2); /*new Range[E]*/
-  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, 10033); 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*/;
-  }
-  break_900: while(0);
-  return_label899: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___ASuperstringExpr___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 10044, 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*/;
-  }
-  break_902: while(0);
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___ASuperstringExpr___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 10051, LOCATE_parser_prod___ASuperstringExpr___visit_all_reverse};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  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);
-  }
-  break_904: while(0);
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AParExpr___n_expr__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 10063, LOCATE_parser_prod___AParExpr___n_expr__eq};
-  val_t variable0;
-  val_t variable1;
-  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=*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AParExpr___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 10071, LOCATE_parser_prod___AParExpr___empty_init};
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AParExpr].i]) return;
-  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, 10073, LOCATE_parser_prod___AParExpr___init_aparexpr};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AParExpr].i]) return;
-  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=*/;
-  }
-  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, 10083, 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, 10085); 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, 10089); 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;
-  }
-  return_label908: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AParExpr___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 10098, LOCATE_parser_prod___AParExpr___visit_all};
-  val_t variable0;
-  val_t variable1;
-  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*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AParExpr___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 10105, LOCATE_parser_prod___AParExpr___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___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*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AAsCastExpr___n_expr__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 10113, 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=*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AAsCastExpr___n_kwas__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 10120, LOCATE_parser_prod___AAsCastExpr___n_kwas__eq};
-  val_t variable0;
-  val_t variable1;
-  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=*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AAsCastExpr___n_type__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 10127, LOCATE_parser_prod___AAsCastExpr___n_type__eq};
-  val_t variable0;
-  val_t variable1;
-  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=*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AAsCastExpr___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 10135, LOCATE_parser_prod___AAsCastExpr___empty_init};
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AAsCastExpr].i]) return;
-  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, 10137, LOCATE_parser_prod___AAsCastExpr___init_aascastexpr};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  val_t variable3;
-  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_AAsCastExpr].i]) return;
-  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=*/;
-  }
-  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, 10157, 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, 10159); 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, 10163); 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, 10173); 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, 10183); 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;
-  }
-  return_label916: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AAsCastExpr___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 10192, 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*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AAsCastExpr___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 10205, LOCATE_parser_prod___AAsCastExpr___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___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*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___APlusAssignOp___n_pluseq__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 10219, LOCATE_parser_prod___APlusAssignOp___n_pluseq__eq};
-  val_t variable0;
-  val_t variable1;
-  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=*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___APlusAssignOp___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 10227, LOCATE_parser_prod___APlusAssignOp___empty_init};
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_APlusAssignOp].i]) return;
-  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, 10229, LOCATE_parser_prod___APlusAssignOp___init_aplusassignop};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_APlusAssignOp].i]) return;
-  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=*/;
-  }
-  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, 10239, LOCATE_parser_prod___APlusAssignOp___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___APlusAssignOp___replace_child, LOCATE_parser_prod, 10241); 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, 10245); 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;
-  }
-  return_label922: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___APlusAssignOp___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 10254, 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*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___APlusAssignOp___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 10261, LOCATE_parser_prod___APlusAssignOp___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___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*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AMinusAssignOp___n_minuseq__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 10269, LOCATE_parser_prod___AMinusAssignOp___n_minuseq__eq};
-  val_t variable0;
-  val_t variable1;
-  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=*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AMinusAssignOp___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 10277, LOCATE_parser_prod___AMinusAssignOp___empty_init};
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AMinusAssignOp].i]) return;
-  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, 10279, LOCATE_parser_prod___AMinusAssignOp___init_aminusassignop};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AMinusAssignOp].i]) return;
-  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=*/;
-  }
-  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, 10289, 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, 10291); 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, 10295); 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;
-  }
-  return_label928: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AMinusAssignOp___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 10304, LOCATE_parser_prod___AMinusAssignOp___visit_all};
-  val_t variable0;
-  val_t variable1;
-  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*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AMinusAssignOp___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 10311, LOCATE_parser_prod___AMinusAssignOp___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___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*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AQualified___n_classid__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 10319, LOCATE_parser_prod___AQualified___n_classid__eq};
-  val_t variable0;
-  val_t variable1;
-  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=*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AQualified___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 10327, LOCATE_parser_prod___AQualified___empty_init};
-  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;
-  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, 10329, LOCATE_parser_prod___AQualified___init_aqualified};
-  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;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AQualified].i]) return;
-  variable2 = NEW_list___List___init(); /*new List[E]*/
-  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, 10336); 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=*/;
-  }
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AQualified].i] = 1;
-  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, 10346, 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, 10348); 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___without_last( TAG_Int(0), variable2); /*new Range[E]*/
-  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___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, 10352); 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=*/;
-      } 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*/;
-      }
-      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, 10364); nit_exit(1);}
-      ATTR_parser_nodes___AQualified____n_classid( self) /*AQualified::_n_classid*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___AQualified____n_classid( self) /*AQualified::_n_classid*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label935;
-  }
-  return_label935: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AQualified___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 10373, LOCATE_parser_prod___AQualified___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___AQualified____n_id( self) /*AQualified::_n_id*/;
-  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_938: while(0);
-    ((list___ListIterator___next_t)CALL(variable1,COLOR_abstract_collection___Iterator___next))(variable1) /*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*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AQualified___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 10383, LOCATE_parser_prod___AQualified___visit_all_reverse};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  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;
-  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);
-  }
-  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*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___ADoc___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 10399, LOCATE_parser_prod___ADoc___empty_init};
-  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;
-  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, 10401, LOCATE_parser_prod___ADoc___init_adoc};
-  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_ADoc].i]) return;
-  variable1 = NEW_list___List___init(); /*new List[E]*/
-  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*/;
-  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, 10407); 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;
-  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, 10413, 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, 10415); 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___without_last( TAG_Int(0), variable2); /*new Range[E]*/
-  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___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, 10419); 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=*/;
-      } 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*/;
-      }
-      goto return_label944;
-    }
-    continue_945: while(0);
-    ((abstract_collection___Iterator___next_t)CALL(variable2,COLOR_abstract_collection___Iterator___next))(variable2) /*Iterator::next*/;
-  }
-  break_945: while(0);
-  return_label944: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___ADoc___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 10430, LOCATE_parser_prod___ADoc___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___ADoc____n_comment( self) /*ADoc::_n_comment*/;
-  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_947: while(0);
-    ((list___ListIterator___next_t)CALL(variable1,COLOR_abstract_collection___Iterator___next))(variable1) /*ListIterator::next*/;
-  }
-  break_947: while(0);
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___ADoc___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 10437, LOCATE_parser_prod___ADoc___visit_all_reverse};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  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;
-  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);
-  }
-  break_949: while(0);
-  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, 10450, LOCATE_parser_prod___Start___init};
-  val_t variable0;
-  val_t variable1;
-  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;
-  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, 10458, 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, 10460); 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, 10465); 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;
-  }
-  return_label951: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___Start___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 10473, LOCATE_parser_prod___Start___visit_all};
-  val_t variable0;
-  val_t variable1;
-  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*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___Start___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 10480, LOCATE_parser_prod___Start___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___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*/;
-  }
-  tracehead = trace.prev;
+val_t parser_prod___ANode___parent(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 10;
+  fra.me.meth = LOCATE_parser_prod___ANode___parent;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./parser//parser_prod.nit:10 */
+  fra.me.REG[0] = ATTR_parser_prod___ANode____parent(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+void parser_prod___ANode___parent__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 10;
+  fra.me.meth = LOCATE_parser_prod___ANode___parent__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:10 */
+  ATTR_parser_prod___ANode____parent(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser_prod___ANode___remove_child(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 13;
+  fra.me.meth = LOCATE_parser_prod___ANode___remove_child;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:16 */
+  CALL_parser_prod___ANode___replace_child(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], NIT_NULL);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser_prod___ANode___replace_child(val_t p0, val_t p1, val_t p2){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 19;
+  fra.me.meth = LOCATE_parser_prod___ANode___replace_child;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  /* ./parser//parser_prod.nit:19 */
+  nit_abort("Deferred method called", NULL, LOCATE_parser_prod, 19);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser_prod___ANode___replace_with(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 22;
+  fra.me.meth = LOCATE_parser_prod___ANode___replace_with;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:25 */
+  fra.me.REG[2] = ATTR_parser_prod___ANode____parent(fra.me.REG[0]);
+  REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:26 */
+    fra.me.REG[2] = ATTR_parser_prod___ANode____parent(fra.me.REG[0]);
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+      nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 26);
+    }
+    CALL_parser_prod___ANode___replace_child(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1]);
+  }
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser_prod___ANode___visit_all(val_t p0, val_t p1){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 30;
+  fra.me.meth = LOCATE_parser_prod___ANode___visit_all;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  /* ./parser//parser_prod.nit:30 */
+  nit_abort("Deferred method called", NULL, LOCATE_parser_prod, 30);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser_prod___Token___visit_all(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 36;
+  fra.me.meth = LOCATE_parser_prod___Token___visit_all;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser_prod___Token___replace_child(val_t p0, val_t p1, val_t p2){
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 37;
+  fra.me.meth = LOCATE_parser_prod___Token___replace_child;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser_prod___Prod___replace_with(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 41;
+  fra.me.meth = LOCATE_parser_prod___Prod___replace_with;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:41 */
+  fra.me.REG[2] = fra.me.REG[0];
+  fra.me.REG[3] = fra.me.REG[1];
+  /* ./parser//parser_prod.nit:43 */
+  CALL_SUPER_parser_prod___Prod___replace_with(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
+  /* ./parser//parser_prod.nit:44 */
+  REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[3], COLOR_Prod, ID_Prod)) /*cast Prod*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser_prod, 44);
+  }
+  /* ./parser//parser_prod.nit:45 */
+  fra.me.REG[2] = CALL_parser_nodes___ANode___location(fra.me.REG[2])(fra.me.REG[2]);
+  CALL_parser_nodes___Prod___location__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser_prod___Visitor___visit(val_t p0, val_t p1){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 51;
+  fra.me.meth = LOCATE_parser_prod___Visitor___visit;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  /* ./parser//parser_prod.nit:51 */
+  nit_abort("Deferred method called", NULL, LOCATE_parser_prod, 51);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser_prod___Visitor___enter_visit(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 55;
+  fra.me.meth = LOCATE_parser_prod___Visitor___enter_visit;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:60 */
+  fra.me.REG[2] = ATTR_parser_prod___Visitor____current_node(fra.me.REG[0]);
+  /* ./parser//parser_prod.nit:61 */
+  ATTR_parser_prod___Visitor____current_node(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./parser//parser_prod.nit:62 */
+  CALL_parser_prod___Visitor___visit(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
+  /* ./parser//parser_prod.nit:63 */
+  ATTR_parser_prod___Visitor____current_node(fra.me.REG[0]) = fra.me.REG[2];
+  stack_frame_head = fra.me.prev;
+  return;
+}
+val_t parser_prod___Visitor___current_node(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 66;
+  fra.me.meth = LOCATE_parser_prod___Visitor___current_node;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./parser//parser_prod.nit:66 */
+  fra.me.REG[0] = ATTR_parser_prod___Visitor____current_node(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+void parser_prod___Visitor___init(val_t p0, int* init_table){
+  int itpos0 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_Visitor].i;
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  if (init_table[itpos0]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_parser_prod___Visitor___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos0] = 1;
+  return;
+}
+void parser_prod___AModule___empty_init(val_t p0, int* init_table){
+  int itpos1 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_AModule].i;
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  if (init_table[itpos1]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 71;
+  fra.me.meth = LOCATE_parser_prod___AModule___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos1] = 1;
+  return;
+}
+void parser_prod___AModule___init_amodule(val_t p0, val_t p1, val_t p2, val_t p3, int* init_table){
+  int itpos2 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_AModule].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  if (init_table[itpos2]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 73;
+  fra.me.meth = LOCATE_parser_prod___AModule___init_amodule;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  fra.me.REG[3] = p3;
+  /* ./parser//parser_prod.nit:79 */
+  CALL_parser_prod___AModule___empty_init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  /* ./parser//parser_prod.nit:80 */
+  ATTR_parser_nodes___AModule____n_moduledecl(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./parser//parser_prod.nit:81 */
+  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:82 */
+    REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+      nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 82);
+    }
+    CALL_parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  }
+  CALL_abstract_collection___Collection___iterate(fra.me.REG[2])(fra.me.REG[2], (&(fra.me)), ((fun_t)OC_parser_prod___AModule___init_amodule_1));
+  CALL_abstract_collection___Collection___iterate(fra.me.REG[3])(fra.me.REG[3], (&(fra.me)), ((fun_t)OC_parser_prod___AModule___init_amodule_2));
+  stack_frame_head = fra.me.prev;
+  init_table[itpos2] = 1;
+  return;
+}
+  void OC_parser_prod___AModule___init_amodule_1(struct stack_frame_t *closctx, val_t p0, struct stack_frame_t *closctx_param, fun_t clos_fun0){
+    struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+    val_t REGB0;
+    fun_t CREG[1];
+    val_t tmp;
+    /* ./parser//parser_prod.nit:84 */
+    fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+    fra.me.file = LOCATE_parser_prod;
+    fra.me.line = 0;
+    fra.me.meth = LOCATE_parser_prod___AModule___init_amodule;
+    fra.me.has_broke = 0;
+    fra.me.REG_size = 2;
+    fra.me.REG[0] = NIT_NULL;
+    fra.me.REG[1] = NIT_NULL;
+    fra.me.closure_ctx = closctx_param;
+    fra.me.closure_funs = CREG;
+    fra.me.REG[0] = p0;
+    CREG[0] = clos_fun0;
+    /* ./parser//parser_prod.nit:85 */
+    REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[0], COLOR_AImport, ID_AImport)) /*cast AImport*/;
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      nit_abort("Assert failed", NULL, LOCATE_parser_prod, 85);
+    }
+    /* ./parser//parser_prod.nit:86 */
+    REGB0 = TAG_Bool(ATTR_parser_nodes___AModule____n_imports(closctx->REG[0])!=NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      nit_abort("Uninitialized attribute %s", "_n_imports", LOCATE_parser_prod, 86);
+    }
+    fra.me.REG[1] = ATTR_parser_nodes___AModule____n_imports(closctx->REG[0]);
+    CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+    /* ./parser//parser_prod.nit:87 */
+    CALL_parser_prod___ANode___parent__eq(fra.me.REG[0])(fra.me.REG[0], closctx->REG[0]);
+    stack_frame_head = fra.me.prev;
+    return;
+  }
+  void OC_parser_prod___AModule___init_amodule_2(struct stack_frame_t *closctx, val_t p0, struct stack_frame_t *closctx_param, fun_t clos_fun0){
+    struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+    val_t REGB0;
+    fun_t CREG[1];
+    val_t tmp;
+    /* ./parser//parser_prod.nit:89 */
+    fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+    fra.me.file = LOCATE_parser_prod;
+    fra.me.line = 0;
+    fra.me.meth = LOCATE_parser_prod___AModule___init_amodule;
+    fra.me.has_broke = 0;
+    fra.me.REG_size = 2;
+    fra.me.REG[0] = NIT_NULL;
+    fra.me.REG[1] = NIT_NULL;
+    fra.me.closure_ctx = closctx_param;
+    fra.me.closure_funs = CREG;
+    fra.me.REG[0] = p0;
+    CREG[0] = clos_fun0;
+    /* ./parser//parser_prod.nit:90 */
+    REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[0], COLOR_AClassdef, ID_AClassdef)) /*cast AClassdef*/;
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      nit_abort("Assert failed", NULL, LOCATE_parser_prod, 90);
+    }
+    /* ./parser//parser_prod.nit:91 */
+    REGB0 = TAG_Bool(ATTR_parser_nodes___AModule____n_classdefs(closctx->REG[0])!=NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      nit_abort("Uninitialized attribute %s", "_n_classdefs", LOCATE_parser_prod, 91);
+    }
+    fra.me.REG[1] = ATTR_parser_nodes___AModule____n_classdefs(closctx->REG[0]);
+    CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+    /* ./parser//parser_prod.nit:92 */
+    CALL_parser_prod___ANode___parent__eq(fra.me.REG[0])(fra.me.REG[0], closctx->REG[0]);
+    stack_frame_head = fra.me.prev;
+    return;
+  }
+void parser_prod___AModule___replace_child(val_t p0, val_t p1, val_t p2){
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t REGB2;
+  val_t REGB3;
+  val_t REGB4;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 96;
+  fra.me.meth = LOCATE_parser_prod___AModule___replace_child;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  /* ./parser//parser_prod.nit:98 */
+  fra.me.REG[3] = ATTR_parser_nodes___AModule____n_moduledecl(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+      REGB0 = REGB1;
+    }
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:99 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:100 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 100);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:101 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_AModuledecl, ID_AModuledecl)) /*cast AModuledecl*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 101);
+      }
+      /* ./parser//parser_prod.nit:102 */
+      ATTR_parser_nodes___AModule____n_moduledecl(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:104 */
+      ATTR_parser_nodes___AModule____n_moduledecl(fra.me.REG[0]) = NIT_NULL;
+    }
+    /* ./parser//parser_prod.nit:106 */
+    goto label1;
+  }
+  /* ./parser//parser_prod.nit:108 */
+  REGB0 = TAG_Int(0);
+  REGB1 = TAG_Bool(ATTR_parser_nodes___AModule____n_imports(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB1)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_imports", LOCATE_parser_prod, 108);
+  }
+  fra.me.REG[3] = ATTR_parser_nodes___AModule____n_imports(fra.me.REG[0]);
+  REGB1 = CALL_abstract_collection___Collection___length(fra.me.REG[3])(fra.me.REG[3]);
+  /* ./../lib/standard//kernel.nit:332 */
+  while(1) {
+    /* ./../lib/standard//kernel.nit:212 */
+    REGB2 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
+    /* ./../lib/standard//kernel.nit:332 */
+    if (UNTAG_Bool(REGB2)) {
+      /* ./parser//parser_prod.nit:108 */
+      REGB2 = REGB0;
+      /* ./parser//parser_prod.nit:109 */
+      REGB3 = TAG_Bool(ATTR_parser_nodes___AModule____n_imports(fra.me.REG[0])!=NIT_NULL);
+      if (UNTAG_Bool(REGB3)) {
+      } else {
+        nit_abort("Uninitialized attribute %s", "_n_imports", LOCATE_parser_prod, 109);
+      }
+      fra.me.REG[3] = ATTR_parser_nodes___AModule____n_imports(fra.me.REG[0]);
+      fra.me.REG[3] = CALL_abstract_collection___MapRead_____bra(fra.me.REG[3])(fra.me.REG[3], REGB2);
+      REGB3 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
+      if (UNTAG_Bool(REGB3)) {
+      } else {
+        REGB4 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+        if (UNTAG_Bool(REGB4)) {
+          REGB4 = TAG_Bool(false);
+          REGB3 = REGB4;
+        } else {
+          REGB4 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+          REGB3 = REGB4;
+        }
+      }
+      if (UNTAG_Bool(REGB3)) {
+        /* ./parser//parser_prod.nit:110 */
+        REGB3 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+        if (UNTAG_Bool(REGB3)) {
+        } else {
+          REGB4 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+          if (UNTAG_Bool(REGB4)) {
+            REGB4 = TAG_Bool(false);
+            REGB3 = REGB4;
+          } else {
+            REGB4 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+            REGB3 = REGB4;
+          }
+        }
+        REGB3 = TAG_Bool(!UNTAG_Bool(REGB3));
+        if (UNTAG_Bool(REGB3)) {
+          /* ./parser//parser_prod.nit:111 */
+          REGB3 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_AImport, ID_AImport)) /*cast AImport*/;
+          if (UNTAG_Bool(REGB3)) {
+          } else {
+            nit_abort("Assert failed", NULL, LOCATE_parser_prod, 111);
+          }
+          /* ./parser//parser_prod.nit:112 */
+          REGB3 = TAG_Bool(ATTR_parser_nodes___AModule____n_imports(fra.me.REG[0])!=NIT_NULL);
+          if (UNTAG_Bool(REGB3)) {
+          } else {
+            nit_abort("Uninitialized attribute %s", "_n_imports", LOCATE_parser_prod, 112);
+          }
+          fra.me.REG[3] = ATTR_parser_nodes___AModule____n_imports(fra.me.REG[0]);
+          CALL_abstract_collection___Map_____braeq(fra.me.REG[3])(fra.me.REG[3], REGB2, fra.me.REG[2]);
+          /* ./parser//parser_prod.nit:113 */
+          REGB3 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+          if (UNTAG_Bool(REGB3)) {
+            nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 113);
+          }
+          CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+        } else {
+          /* ./parser//parser_prod.nit:115 */
+          REGB3 = TAG_Bool(ATTR_parser_nodes___AModule____n_imports(fra.me.REG[0])!=NIT_NULL);
+          if (UNTAG_Bool(REGB3)) {
+          } else {
+            nit_abort("Uninitialized attribute %s", "_n_imports", LOCATE_parser_prod, 115);
+          }
+          fra.me.REG[3] = ATTR_parser_nodes___AModule____n_imports(fra.me.REG[0]);
+          CALL_abstract_collection___Map___remove_at(fra.me.REG[3])(fra.me.REG[3], REGB2);
+        }
+        /* ./parser//parser_prod.nit:117 */
+        goto label1;
+      }
+      /* ./../lib/standard//kernel.nit:334 */
+      REGB2 = TAG_Int(1);
+      /* ./../lib/standard//kernel.nit:215 */
+      REGB2 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB2));
+      /* ./../lib/standard//kernel.nit:334 */
+      REGB0 = REGB2;
+    } else {
+      /* ./../lib/standard//kernel.nit:332 */
+      goto label2;
+    }
+  }
+  label2: while(0);
+  /* ./parser//parser_prod.nit:120 */
+  REGB0 = TAG_Int(0);
+  REGB1 = TAG_Bool(ATTR_parser_nodes___AModule____n_classdefs(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB1)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_classdefs", LOCATE_parser_prod, 120);
+  }
+  fra.me.REG[3] = ATTR_parser_nodes___AModule____n_classdefs(fra.me.REG[0]);
+  REGB1 = CALL_abstract_collection___Collection___length(fra.me.REG[3])(fra.me.REG[3]);
+  /* ./../lib/standard//kernel.nit:332 */
+  while(1) {
+    /* ./../lib/standard//kernel.nit:212 */
+    REGB2 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
+    /* ./../lib/standard//kernel.nit:332 */
+    if (UNTAG_Bool(REGB2)) {
+      /* ./parser//parser_prod.nit:120 */
+      REGB2 = REGB0;
+      /* ./parser//parser_prod.nit:121 */
+      REGB3 = TAG_Bool(ATTR_parser_nodes___AModule____n_classdefs(fra.me.REG[0])!=NIT_NULL);
+      if (UNTAG_Bool(REGB3)) {
+      } else {
+        nit_abort("Uninitialized attribute %s", "_n_classdefs", LOCATE_parser_prod, 121);
+      }
+      fra.me.REG[3] = ATTR_parser_nodes___AModule____n_classdefs(fra.me.REG[0]);
+      fra.me.REG[3] = CALL_abstract_collection___MapRead_____bra(fra.me.REG[3])(fra.me.REG[3], REGB2);
+      REGB3 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
+      if (UNTAG_Bool(REGB3)) {
+      } else {
+        REGB4 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+        if (UNTAG_Bool(REGB4)) {
+          REGB4 = TAG_Bool(false);
+          REGB3 = REGB4;
+        } else {
+          REGB4 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+          REGB3 = REGB4;
+        }
+      }
+      if (UNTAG_Bool(REGB3)) {
+        /* ./parser//parser_prod.nit:122 */
+        REGB3 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+        if (UNTAG_Bool(REGB3)) {
+        } else {
+          REGB4 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+          if (UNTAG_Bool(REGB4)) {
+            REGB4 = TAG_Bool(false);
+            REGB3 = REGB4;
+          } else {
+            REGB4 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+            REGB3 = REGB4;
+          }
+        }
+        REGB3 = TAG_Bool(!UNTAG_Bool(REGB3));
+        if (UNTAG_Bool(REGB3)) {
+          /* ./parser//parser_prod.nit:123 */
+          REGB3 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_AClassdef, ID_AClassdef)) /*cast AClassdef*/;
+          if (UNTAG_Bool(REGB3)) {
+          } else {
+            nit_abort("Assert failed", NULL, LOCATE_parser_prod, 123);
+          }
+          /* ./parser//parser_prod.nit:124 */
+          REGB3 = TAG_Bool(ATTR_parser_nodes___AModule____n_classdefs(fra.me.REG[0])!=NIT_NULL);
+          if (UNTAG_Bool(REGB3)) {
+          } else {
+            nit_abort("Uninitialized attribute %s", "_n_classdefs", LOCATE_parser_prod, 124);
+          }
+          fra.me.REG[3] = ATTR_parser_nodes___AModule____n_classdefs(fra.me.REG[0]);
+          CALL_abstract_collection___Map_____braeq(fra.me.REG[3])(fra.me.REG[3], REGB2, fra.me.REG[2]);
+          /* ./parser//parser_prod.nit:125 */
+          REGB3 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+          if (UNTAG_Bool(REGB3)) {
+            nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 125);
+          }
+          CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+        } else {
+          /* ./parser//parser_prod.nit:127 */
+          REGB3 = TAG_Bool(ATTR_parser_nodes___AModule____n_classdefs(fra.me.REG[0])!=NIT_NULL);
+          if (UNTAG_Bool(REGB3)) {
+          } else {
+            nit_abort("Uninitialized attribute %s", "_n_classdefs", LOCATE_parser_prod, 127);
+          }
+          fra.me.REG[3] = ATTR_parser_nodes___AModule____n_classdefs(fra.me.REG[0]);
+          CALL_abstract_collection___Map___remove_at(fra.me.REG[3])(fra.me.REG[3], REGB2);
+        }
+        /* ./parser//parser_prod.nit:129 */
+        goto label1;
+      }
+      /* ./../lib/standard//kernel.nit:334 */
+      REGB2 = TAG_Int(1);
+      /* ./../lib/standard//kernel.nit:215 */
+      REGB2 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB2));
+      /* ./../lib/standard//kernel.nit:334 */
+      REGB0 = REGB2;
+    } else {
+      /* ./../lib/standard//kernel.nit:332 */
+      goto label3;
+    }
+  }
+  label3: while(0);
+  label1: while(0);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser_prod___AModule___visit_all(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 134;
+  fra.me.meth = LOCATE_parser_prod___AModule___visit_all;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:136 */
+  fra.me.REG[2] = ATTR_parser_nodes___AModule____n_moduledecl(fra.me.REG[0]);
+  REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:137 */
+    fra.me.REG[2] = ATTR_parser_nodes___AModule____n_moduledecl(fra.me.REG[0]);
+    REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_AModuledecl, ID_AModuledecl)) /*cast AModuledecl*/;
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      nit_abort("Cast failed", NULL, LOCATE_parser_prod, 137);
+    }
+    CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  }
+  /* ./parser//parser_prod.nit:139 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AModule____n_imports(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_imports", LOCATE_parser_prod, 139);
+  }
+  fra.me.REG[2] = ATTR_parser_nodes___AModule____n_imports(fra.me.REG[0]);
+  CALL_abstract_collection___Collection___iterate(fra.me.REG[2])(fra.me.REG[2], (&(fra.me)), ((fun_t)OC_parser_prod___AModule___visit_all_1));
+  /* ./parser//parser_prod.nit:142 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AModule____n_classdefs(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_classdefs", LOCATE_parser_prod, 142);
+  }
+  fra.me.REG[0] = ATTR_parser_nodes___AModule____n_classdefs(fra.me.REG[0]);
+  CALL_abstract_collection___Collection___iterate(fra.me.REG[0])(fra.me.REG[0], (&(fra.me)), ((fun_t)OC_parser_prod___AModule___visit_all_2));
+  stack_frame_head = fra.me.prev;
+  return;
+}
+  void OC_parser_prod___AModule___visit_all_1(struct stack_frame_t *closctx, val_t p0, struct stack_frame_t *closctx_param, fun_t clos_fun0){
+    struct {struct stack_frame_t me;} fra;
+    fun_t CREG[1];
+    val_t tmp;
+    fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+    fra.me.file = LOCATE_parser_prod;
+    fra.me.line = 0;
+    fra.me.meth = LOCATE_parser_prod___AModule___visit_all;
+    fra.me.has_broke = 0;
+    fra.me.REG_size = 1;
+    fra.me.REG[0] = NIT_NULL;
+    fra.me.closure_ctx = closctx_param;
+    fra.me.closure_funs = CREG;
+    fra.me.REG[0] = p0;
+    CREG[0] = clos_fun0;
+    /* ./parser//parser_prod.nit:140 */
+    CALL_parser_prod___Visitor___enter_visit(closctx->REG[1])(closctx->REG[1], fra.me.REG[0]);
+    stack_frame_head = fra.me.prev;
+    return;
+  }
+  void OC_parser_prod___AModule___visit_all_2(struct stack_frame_t *closctx, val_t p0, struct stack_frame_t *closctx_param, fun_t clos_fun0){
+    struct {struct stack_frame_t me;} fra;
+    fun_t CREG[1];
+    val_t tmp;
+    fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+    fra.me.file = LOCATE_parser_prod;
+    fra.me.line = 0;
+    fra.me.meth = LOCATE_parser_prod___AModule___visit_all;
+    fra.me.has_broke = 0;
+    fra.me.REG_size = 1;
+    fra.me.REG[0] = NIT_NULL;
+    fra.me.closure_ctx = closctx_param;
+    fra.me.closure_funs = CREG;
+    fra.me.REG[0] = p0;
+    CREG[0] = clos_fun0;
+    /* ./parser//parser_prod.nit:143 */
+    CALL_parser_prod___Visitor___enter_visit(closctx->REG[1])(closctx->REG[1], fra.me.REG[0]);
+    stack_frame_head = fra.me.prev;
+    return;
+  }
+void parser_prod___AModuledecl___empty_init(val_t p0, int* init_table){
+  int itpos3 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_AModuledecl].i;
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  if (init_table[itpos3]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 148;
+  fra.me.meth = LOCATE_parser_prod___AModuledecl___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos3] = 1;
+  return;
+}
+void parser_prod___AModuledecl___init_amoduledecl(val_t p0, val_t p1, val_t p2, val_t p3, int* init_table){
+  int itpos4 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_AModuledecl].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  if (init_table[itpos4]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 150;
+  fra.me.meth = LOCATE_parser_prod___AModuledecl___init_amoduledecl;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  fra.me.REG[3] = p3;
+  /* ./parser//parser_prod.nit:156 */
+  CALL_parser_prod___AModuledecl___empty_init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  /* ./parser//parser_prod.nit:157 */
+  ATTR_parser_nodes___AModuledecl____n_doc(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./parser//parser_prod.nit:158 */
+  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:159 */
+    REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+      nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 159);
+    }
+    CALL_parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  }
+  /* ./parser//parser_prod.nit:161 */
+  REGB0 = TAG_Bool(fra.me.REG[2]!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Cast failed", NULL, LOCATE_parser_prod, 161);
+  }
+  ATTR_parser_nodes___AModuledecl____n_kwmodule(fra.me.REG[0]) = fra.me.REG[2];
+  /* ./parser//parser_prod.nit:162 */
+  REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+    nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 162);
+  }
+  CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+  /* ./parser//parser_prod.nit:163 */
+  REGB0 = TAG_Bool(fra.me.REG[3]!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Cast failed", NULL, LOCATE_parser_prod, 163);
+  }
+  ATTR_parser_nodes___AModuledecl____n_id(fra.me.REG[0]) = fra.me.REG[3];
+  /* ./parser//parser_prod.nit:164 */
+  REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+    nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 164);
+  }
+  CALL_parser_prod___ANode___parent__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  init_table[itpos4] = 1;
+  return;
+}
+void parser_prod___AModuledecl___replace_child(val_t p0, val_t p1, val_t p2){
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 167;
+  fra.me.meth = LOCATE_parser_prod___AModuledecl___replace_child;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  /* ./parser//parser_prod.nit:169 */
+  fra.me.REG[3] = ATTR_parser_nodes___AModuledecl____n_doc(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+      REGB0 = REGB1;
+    }
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:170 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:171 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 171);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:172 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_ADoc, ID_ADoc)) /*cast ADoc*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 172);
+      }
+      /* ./parser//parser_prod.nit:173 */
+      ATTR_parser_nodes___AModuledecl____n_doc(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:175 */
+      ATTR_parser_nodes___AModuledecl____n_doc(fra.me.REG[0]) = NIT_NULL;
+    }
+    /* ./parser//parser_prod.nit:177 */
+    goto label1;
+  }
+  /* ./parser//parser_prod.nit:179 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AModuledecl____n_kwmodule(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_kwmodule", LOCATE_parser_prod, 179);
+  }
+  fra.me.REG[3] = ATTR_parser_nodes___AModuledecl____n_kwmodule(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+    REGB0 = REGB1;
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:180 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:181 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 181);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:182 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_TKwmodule, ID_TKwmodule)) /*cast TKwmodule*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 182);
+      }
+      /* ./parser//parser_prod.nit:183 */
+      ATTR_parser_nodes___AModuledecl____n_kwmodule(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:185 */
+      nit_abort("Aborted", NULL, LOCATE_parser_prod, 185);
+    }
+    /* ./parser//parser_prod.nit:187 */
+    goto label1;
+  }
+  /* ./parser//parser_prod.nit:189 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AModuledecl____n_id(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_id", LOCATE_parser_prod, 189);
+  }
+  fra.me.REG[3] = ATTR_parser_nodes___AModuledecl____n_id(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+    REGB0 = REGB1;
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:190 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:191 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 191);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:192 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_TId, ID_TId)) /*cast TId*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 192);
+      }
+      /* ./parser//parser_prod.nit:193 */
+      ATTR_parser_nodes___AModuledecl____n_id(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:195 */
+      nit_abort("Aborted", NULL, LOCATE_parser_prod, 195);
+    }
+    /* ./parser//parser_prod.nit:197 */
+    goto label1;
+  }
+  label1: while(0);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser_prod___AModuledecl___visit_all(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 201;
+  fra.me.meth = LOCATE_parser_prod___AModuledecl___visit_all;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:203 */
+  fra.me.REG[2] = ATTR_parser_nodes___AModuledecl____n_doc(fra.me.REG[0]);
+  REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:204 */
+    fra.me.REG[2] = ATTR_parser_nodes___AModuledecl____n_doc(fra.me.REG[0]);
+    REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_ADoc, ID_ADoc)) /*cast ADoc*/;
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      nit_abort("Cast failed", NULL, LOCATE_parser_prod, 204);
+    }
+    CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  }
+  /* ./parser//parser_prod.nit:206 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AModuledecl____n_kwmodule(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_kwmodule", LOCATE_parser_prod, 206);
+  }
+  fra.me.REG[2] = ATTR_parser_nodes___AModuledecl____n_kwmodule(fra.me.REG[0]);
+  CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser_prod.nit:207 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AModuledecl____n_id(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_id", LOCATE_parser_prod, 207);
+  }
+  fra.me.REG[0] = ATTR_parser_nodes___AModuledecl____n_id(fra.me.REG[0]);
+  CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser_prod___AStdImport___empty_init(val_t p0, int* init_table){
+  int itpos5 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_AStdImport].i;
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  if (init_table[itpos5]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 211;
+  fra.me.meth = LOCATE_parser_prod___AStdImport___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos5] = 1;
+  return;
+}
+void parser_prod___AStdImport___init_astdimport(val_t p0, val_t p1, val_t p2, val_t p3, int* init_table){
+  int itpos6 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_AStdImport].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos6]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 213;
+  fra.me.meth = LOCATE_parser_prod___AStdImport___init_astdimport;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  fra.me.REG[3] = p3;
+  /* ./parser//parser_prod.nit:219 */
+  CALL_parser_prod___AStdImport___empty_init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  /* ./parser//parser_prod.nit:220 */
+  REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Cast failed", NULL, LOCATE_parser_prod, 220);
+  }
+  ATTR_parser_nodes___AStdImport____n_visibility(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./parser//parser_prod.nit:221 */
+  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+    nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 221);
+  }
+  CALL_parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  /* ./parser//parser_prod.nit:222 */
+  REGB0 = TAG_Bool(fra.me.REG[2]!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Cast failed", NULL, LOCATE_parser_prod, 222);
+  }
+  ATTR_parser_nodes___AStdImport____n_kwimport(fra.me.REG[0]) = fra.me.REG[2];
+  /* ./parser//parser_prod.nit:223 */
+  REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+    nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 223);
+  }
+  CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+  /* ./parser//parser_prod.nit:224 */
+  REGB0 = TAG_Bool(fra.me.REG[3]!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Cast failed", NULL, LOCATE_parser_prod, 224);
+  }
+  ATTR_parser_nodes___AStdImport____n_id(fra.me.REG[0]) = fra.me.REG[3];
+  /* ./parser//parser_prod.nit:225 */
+  REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+    nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 225);
+  }
+  CALL_parser_prod___ANode___parent__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  init_table[itpos6] = 1;
+  return;
+}
+void parser_prod___AStdImport___replace_child(val_t p0, val_t p1, val_t p2){
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 228;
+  fra.me.meth = LOCATE_parser_prod___AStdImport___replace_child;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  /* ./parser//parser_prod.nit:230 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AStdImport____n_visibility(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_visibility", LOCATE_parser_prod, 230);
+  }
+  fra.me.REG[3] = ATTR_parser_nodes___AStdImport____n_visibility(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+    REGB0 = REGB1;
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:231 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:232 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 232);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:233 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_AVisibility, ID_AVisibility)) /*cast AVisibility*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 233);
+      }
+      /* ./parser//parser_prod.nit:234 */
+      ATTR_parser_nodes___AStdImport____n_visibility(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:236 */
+      nit_abort("Aborted", NULL, LOCATE_parser_prod, 236);
+    }
+    /* ./parser//parser_prod.nit:238 */
+    goto label1;
+  }
+  /* ./parser//parser_prod.nit:240 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AStdImport____n_kwimport(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_kwimport", LOCATE_parser_prod, 240);
+  }
+  fra.me.REG[3] = ATTR_parser_nodes___AStdImport____n_kwimport(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+    REGB0 = REGB1;
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:241 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:242 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 242);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:243 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_TKwimport, ID_TKwimport)) /*cast TKwimport*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 243);
+      }
+      /* ./parser//parser_prod.nit:244 */
+      ATTR_parser_nodes___AStdImport____n_kwimport(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:246 */
+      nit_abort("Aborted", NULL, LOCATE_parser_prod, 246);
+    }
+    /* ./parser//parser_prod.nit:248 */
+    goto label1;
+  }
+  /* ./parser//parser_prod.nit:250 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AStdImport____n_id(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_id", LOCATE_parser_prod, 250);
+  }
+  fra.me.REG[3] = ATTR_parser_nodes___AStdImport____n_id(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+    REGB0 = REGB1;
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:251 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:252 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 252);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:253 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_TId, ID_TId)) /*cast TId*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 253);
+      }
+      /* ./parser//parser_prod.nit:254 */
+      ATTR_parser_nodes___AStdImport____n_id(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:256 */
+      nit_abort("Aborted", NULL, LOCATE_parser_prod, 256);
+    }
+    /* ./parser//parser_prod.nit:258 */
+    goto label1;
+  }
+  label1: while(0);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser_prod___AStdImport___visit_all(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 262;
+  fra.me.meth = LOCATE_parser_prod___AStdImport___visit_all;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:264 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AStdImport____n_visibility(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_visibility", LOCATE_parser_prod, 264);
+  }
+  fra.me.REG[2] = ATTR_parser_nodes___AStdImport____n_visibility(fra.me.REG[0]);
+  CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser_prod.nit:265 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AStdImport____n_kwimport(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_kwimport", LOCATE_parser_prod, 265);
+  }
+  fra.me.REG[2] = ATTR_parser_nodes___AStdImport____n_kwimport(fra.me.REG[0]);
+  CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser_prod.nit:266 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AStdImport____n_id(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_id", LOCATE_parser_prod, 266);
+  }
+  fra.me.REG[0] = ATTR_parser_nodes___AStdImport____n_id(fra.me.REG[0]);
+  CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser_prod___ANoImport___empty_init(val_t p0, int* init_table){
+  int itpos7 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ANoImport].i;
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  if (init_table[itpos7]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 270;
+  fra.me.meth = LOCATE_parser_prod___ANoImport___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos7] = 1;
+  return;
+}
+void parser_prod___ANoImport___init_anoimport(val_t p0, val_t p1, val_t p2, val_t p3, int* init_table){
+  int itpos8 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ANoImport].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos8]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 272;
+  fra.me.meth = LOCATE_parser_prod___ANoImport___init_anoimport;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  fra.me.REG[3] = p3;
+  /* ./parser//parser_prod.nit:278 */
+  CALL_parser_prod___ANoImport___empty_init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  /* ./parser//parser_prod.nit:279 */
+  REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Cast failed", NULL, LOCATE_parser_prod, 279);
+  }
+  ATTR_parser_nodes___ANoImport____n_visibility(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./parser//parser_prod.nit:280 */
+  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+    nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 280);
+  }
+  CALL_parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  /* ./parser//parser_prod.nit:281 */
+  REGB0 = TAG_Bool(fra.me.REG[2]!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Cast failed", NULL, LOCATE_parser_prod, 281);
+  }
+  ATTR_parser_nodes___ANoImport____n_kwimport(fra.me.REG[0]) = fra.me.REG[2];
+  /* ./parser//parser_prod.nit:282 */
+  REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+    nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 282);
+  }
+  CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+  /* ./parser//parser_prod.nit:283 */
+  REGB0 = TAG_Bool(fra.me.REG[3]!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Cast failed", NULL, LOCATE_parser_prod, 283);
+  }
+  ATTR_parser_nodes___ANoImport____n_kwend(fra.me.REG[0]) = fra.me.REG[3];
+  /* ./parser//parser_prod.nit:284 */
+  REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+    nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 284);
+  }
+  CALL_parser_prod___ANode___parent__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  init_table[itpos8] = 1;
+  return;
+}
+void parser_prod___ANoImport___replace_child(val_t p0, val_t p1, val_t p2){
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 287;
+  fra.me.meth = LOCATE_parser_prod___ANoImport___replace_child;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  /* ./parser//parser_prod.nit:289 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ANoImport____n_visibility(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_visibility", LOCATE_parser_prod, 289);
+  }
+  fra.me.REG[3] = ATTR_parser_nodes___ANoImport____n_visibility(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+    REGB0 = REGB1;
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:290 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:291 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 291);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:292 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_AVisibility, ID_AVisibility)) /*cast AVisibility*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 292);
+      }
+      /* ./parser//parser_prod.nit:293 */
+      ATTR_parser_nodes___ANoImport____n_visibility(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:295 */
+      nit_abort("Aborted", NULL, LOCATE_parser_prod, 295);
+    }
+    /* ./parser//parser_prod.nit:297 */
+    goto label1;
+  }
+  /* ./parser//parser_prod.nit:299 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ANoImport____n_kwimport(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_kwimport", LOCATE_parser_prod, 299);
+  }
+  fra.me.REG[3] = ATTR_parser_nodes___ANoImport____n_kwimport(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+    REGB0 = REGB1;
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:300 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:301 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 301);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:302 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_TKwimport, ID_TKwimport)) /*cast TKwimport*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 302);
+      }
+      /* ./parser//parser_prod.nit:303 */
+      ATTR_parser_nodes___ANoImport____n_kwimport(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:305 */
+      nit_abort("Aborted", NULL, LOCATE_parser_prod, 305);
+    }
+    /* ./parser//parser_prod.nit:307 */
+    goto label1;
+  }
+  /* ./parser//parser_prod.nit:309 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ANoImport____n_kwend(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_kwend", LOCATE_parser_prod, 309);
+  }
+  fra.me.REG[3] = ATTR_parser_nodes___ANoImport____n_kwend(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+    REGB0 = REGB1;
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:310 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:311 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 311);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:312 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_TKwend, ID_TKwend)) /*cast TKwend*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 312);
+      }
+      /* ./parser//parser_prod.nit:313 */
+      ATTR_parser_nodes___ANoImport____n_kwend(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:315 */
+      nit_abort("Aborted", NULL, LOCATE_parser_prod, 315);
+    }
+    /* ./parser//parser_prod.nit:317 */
+    goto label1;
+  }
+  label1: while(0);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser_prod___ANoImport___visit_all(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 321;
+  fra.me.meth = LOCATE_parser_prod___ANoImport___visit_all;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:323 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ANoImport____n_visibility(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_visibility", LOCATE_parser_prod, 323);
+  }
+  fra.me.REG[2] = ATTR_parser_nodes___ANoImport____n_visibility(fra.me.REG[0]);
+  CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser_prod.nit:324 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ANoImport____n_kwimport(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_kwimport", LOCATE_parser_prod, 324);
+  }
+  fra.me.REG[2] = ATTR_parser_nodes___ANoImport____n_kwimport(fra.me.REG[0]);
+  CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser_prod.nit:325 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ANoImport____n_kwend(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_kwend", LOCATE_parser_prod, 325);
+  }
+  fra.me.REG[0] = ATTR_parser_nodes___ANoImport____n_kwend(fra.me.REG[0]);
+  CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser_prod___APublicVisibility___empty_init(val_t p0, int* init_table){
+  int itpos9 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_APublicVisibility].i;
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  if (init_table[itpos9]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 329;
+  fra.me.meth = LOCATE_parser_prod___APublicVisibility___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos9] = 1;
+  return;
+}
+void parser_prod___APublicVisibility___init_apublicvisibility(val_t p0, int* init_table){
+  int itpos10 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_APublicVisibility].i;
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  if (init_table[itpos10]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 331;
+  fra.me.meth = LOCATE_parser_prod___APublicVisibility___init_apublicvisibility;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./parser//parser_prod.nit:333 */
+  CALL_parser_prod___APublicVisibility___empty_init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  stack_frame_head = fra.me.prev;
+  init_table[itpos10] = 1;
+  return;
+}
+void parser_prod___APublicVisibility___replace_child(val_t p0, val_t p1, val_t p2){
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 336;
+  fra.me.meth = LOCATE_parser_prod___APublicVisibility___replace_child;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser_prod___APublicVisibility___visit_all(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 340;
+  fra.me.meth = LOCATE_parser_prod___APublicVisibility___visit_all;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser_prod___APrivateVisibility___empty_init(val_t p0, int* init_table){
+  int itpos11 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_APrivateVisibility].i;
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  if (init_table[itpos11]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 345;
+  fra.me.meth = LOCATE_parser_prod___APrivateVisibility___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos11] = 1;
+  return;
+}
+void parser_prod___APrivateVisibility___init_aprivatevisibility(val_t p0, val_t p1, int* init_table){
+  int itpos12 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_APrivateVisibility].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos12]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 347;
+  fra.me.meth = LOCATE_parser_prod___APrivateVisibility___init_aprivatevisibility;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:351 */
+  CALL_parser_prod___APrivateVisibility___empty_init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  /* ./parser//parser_prod.nit:352 */
+  REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Cast failed", NULL, LOCATE_parser_prod, 352);
+  }
+  ATTR_parser_nodes___APrivateVisibility____n_kwprivate(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./parser//parser_prod.nit:353 */
+  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+    nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 353);
+  }
+  CALL_parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  init_table[itpos12] = 1;
+  return;
+}
+void parser_prod___APrivateVisibility___replace_child(val_t p0, val_t p1, val_t p2){
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 356;
+  fra.me.meth = LOCATE_parser_prod___APrivateVisibility___replace_child;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  /* ./parser//parser_prod.nit:358 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___APrivateVisibility____n_kwprivate(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_kwprivate", LOCATE_parser_prod, 358);
+  }
+  fra.me.REG[3] = ATTR_parser_nodes___APrivateVisibility____n_kwprivate(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+    REGB0 = REGB1;
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:359 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:360 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 360);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:361 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_TKwprivate, ID_TKwprivate)) /*cast TKwprivate*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 361);
+      }
+      /* ./parser//parser_prod.nit:362 */
+      ATTR_parser_nodes___APrivateVisibility____n_kwprivate(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:364 */
+      nit_abort("Aborted", NULL, LOCATE_parser_prod, 364);
+    }
+    /* ./parser//parser_prod.nit:366 */
+    goto label1;
+  }
+  label1: while(0);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser_prod___APrivateVisibility___visit_all(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 370;
+  fra.me.meth = LOCATE_parser_prod___APrivateVisibility___visit_all;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:372 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___APrivateVisibility____n_kwprivate(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_kwprivate", LOCATE_parser_prod, 372);
+  }
+  fra.me.REG[0] = ATTR_parser_nodes___APrivateVisibility____n_kwprivate(fra.me.REG[0]);
+  CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser_prod___AProtectedVisibility___empty_init(val_t p0, int* init_table){
+  int itpos13 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_AProtectedVisibility].i;
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  if (init_table[itpos13]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 376;
+  fra.me.meth = LOCATE_parser_prod___AProtectedVisibility___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos13] = 1;
+  return;
+}
+void parser_prod___AProtectedVisibility___init_aprotectedvisibility(val_t p0, val_t p1, int* init_table){
+  int itpos14 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_AProtectedVisibility].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos14]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 378;
+  fra.me.meth = LOCATE_parser_prod___AProtectedVisibility___init_aprotectedvisibility;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:382 */
+  CALL_parser_prod___AProtectedVisibility___empty_init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  /* ./parser//parser_prod.nit:383 */
+  REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Cast failed", NULL, LOCATE_parser_prod, 383);
+  }
+  ATTR_parser_nodes___AProtectedVisibility____n_kwprotected(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./parser//parser_prod.nit:384 */
+  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+    nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 384);
+  }
+  CALL_parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  init_table[itpos14] = 1;
+  return;
+}
+void parser_prod___AProtectedVisibility___replace_child(val_t p0, val_t p1, val_t p2){
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 387;
+  fra.me.meth = LOCATE_parser_prod___AProtectedVisibility___replace_child;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  /* ./parser//parser_prod.nit:389 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AProtectedVisibility____n_kwprotected(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_kwprotected", LOCATE_parser_prod, 389);
+  }
+  fra.me.REG[3] = ATTR_parser_nodes___AProtectedVisibility____n_kwprotected(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+    REGB0 = REGB1;
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:390 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:391 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 391);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:392 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_TKwprotected, ID_TKwprotected)) /*cast TKwprotected*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 392);
+      }
+      /* ./parser//parser_prod.nit:393 */
+      ATTR_parser_nodes___AProtectedVisibility____n_kwprotected(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:395 */
+      nit_abort("Aborted", NULL, LOCATE_parser_prod, 395);
+    }
+    /* ./parser//parser_prod.nit:397 */
+    goto label1;
+  }
+  label1: while(0);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser_prod___AProtectedVisibility___visit_all(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 401;
+  fra.me.meth = LOCATE_parser_prod___AProtectedVisibility___visit_all;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:403 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AProtectedVisibility____n_kwprotected(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_kwprotected", LOCATE_parser_prod, 403);
+  }
+  fra.me.REG[0] = ATTR_parser_nodes___AProtectedVisibility____n_kwprotected(fra.me.REG[0]);
+  CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser_prod___AIntrudeVisibility___empty_init(val_t p0, int* init_table){
+  int itpos15 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_AIntrudeVisibility].i;
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  if (init_table[itpos15]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 407;
+  fra.me.meth = LOCATE_parser_prod___AIntrudeVisibility___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos15] = 1;
+  return;
+}
+void parser_prod___AIntrudeVisibility___init_aintrudevisibility(val_t p0, val_t p1, int* init_table){
+  int itpos16 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_AIntrudeVisibility].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos16]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 409;
+  fra.me.meth = LOCATE_parser_prod___AIntrudeVisibility___init_aintrudevisibility;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:413 */
+  CALL_parser_prod___AIntrudeVisibility___empty_init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  /* ./parser//parser_prod.nit:414 */
+  REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Cast failed", NULL, LOCATE_parser_prod, 414);
+  }
+  ATTR_parser_nodes___AIntrudeVisibility____n_kwintrude(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./parser//parser_prod.nit:415 */
+  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+    nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 415);
+  }
+  CALL_parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  init_table[itpos16] = 1;
+  return;
+}
+void parser_prod___AIntrudeVisibility___replace_child(val_t p0, val_t p1, val_t p2){
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 418;
+  fra.me.meth = LOCATE_parser_prod___AIntrudeVisibility___replace_child;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  /* ./parser//parser_prod.nit:420 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AIntrudeVisibility____n_kwintrude(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_kwintrude", LOCATE_parser_prod, 420);
+  }
+  fra.me.REG[3] = ATTR_parser_nodes___AIntrudeVisibility____n_kwintrude(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+    REGB0 = REGB1;
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:421 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:422 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 422);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:423 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_TKwintrude, ID_TKwintrude)) /*cast TKwintrude*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 423);
+      }
+      /* ./parser//parser_prod.nit:424 */
+      ATTR_parser_nodes___AIntrudeVisibility____n_kwintrude(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:426 */
+      nit_abort("Aborted", NULL, LOCATE_parser_prod, 426);
+    }
+    /* ./parser//parser_prod.nit:428 */
+    goto label1;
+  }
+  label1: while(0);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser_prod___AIntrudeVisibility___visit_all(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 432;
+  fra.me.meth = LOCATE_parser_prod___AIntrudeVisibility___visit_all;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:434 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AIntrudeVisibility____n_kwintrude(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_kwintrude", LOCATE_parser_prod, 434);
+  }
+  fra.me.REG[0] = ATTR_parser_nodes___AIntrudeVisibility____n_kwintrude(fra.me.REG[0]);
+  CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser_prod___AStdClassdef___empty_init(val_t p0, int* init_table){
+  int itpos17 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_AStdClassdef].i;
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  if (init_table[itpos17]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 438;
+  fra.me.meth = LOCATE_parser_prod___AStdClassdef___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos17] = 1;
+  return;
+}
+void parser_prod___AStdClassdef___init_astdclassdef(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4, val_t p5, val_t p6, val_t p7, val_t p8, int* init_table){
+  int itpos18 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_AStdClassdef].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[8];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  if (init_table[itpos18]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 440;
+  fra.me.meth = LOCATE_parser_prod___AStdClassdef___init_astdclassdef;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 9;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  fra.me.REG[3] = p3;
+  fra.me.REG[4] = p4;
+  fra.me.REG[5] = p5;
+  fra.me.REG[6] = p6;
+  fra.me.REG[7] = p7;
+  fra.me.REG[8] = p8;
+  /* ./parser//parser_prod.nit:451 */
+  CALL_parser_prod___AStdClassdef___empty_init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  /* ./parser//parser_prod.nit:452 */
+  ATTR_parser_nodes___AStdClassdef____n_doc(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./parser//parser_prod.nit:453 */
+  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:454 */
+    REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+      nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 454);
+    }
+    CALL_parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  }
+  /* ./parser//parser_prod.nit:456 */
+  ATTR_parser_nodes___AStdClassdef____n_kwredef(fra.me.REG[0]) = fra.me.REG[2];
+  /* ./parser//parser_prod.nit:457 */
+  REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:458 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+      nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 458);
+    }
+    CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+  }
+  /* ./parser//parser_prod.nit:460 */
+  REGB0 = TAG_Bool(fra.me.REG[3]!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Cast failed", NULL, LOCATE_parser_prod, 460);
+  }
+  ATTR_parser_nodes___AStdClassdef____n_visibility(fra.me.REG[0]) = fra.me.REG[3];
+  /* ./parser//parser_prod.nit:461 */
+  REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+    nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 461);
+  }
+  CALL_parser_prod___ANode___parent__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[0]);
+  /* ./parser//parser_prod.nit:462 */
+  REGB0 = TAG_Bool(fra.me.REG[4]!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Cast failed", NULL, LOCATE_parser_prod, 462);
+  }
+  ATTR_parser_nodes___AStdClassdef____n_classkind(fra.me.REG[0]) = fra.me.REG[4];
+  /* ./parser//parser_prod.nit:463 */
+  REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+    nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 463);
+  }
+  CALL_parser_prod___ANode___parent__eq(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[0]);
+  /* ./parser//parser_prod.nit:464 */
+  ATTR_parser_nodes___AStdClassdef____n_id(fra.me.REG[0]) = fra.me.REG[5];
+  /* ./parser//parser_prod.nit:465 */
+  REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[5])(fra.me.REG[5], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:466 */
+    REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+      nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 466);
+    }
+    CALL_parser_prod___ANode___parent__eq(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[0]);
+  }
+  CALL_abstract_collection___Collection___iterate(fra.me.REG[6])(fra.me.REG[6], (&(fra.me)), ((fun_t)OC_parser_prod___AStdClassdef___init_astdclassdef_1));
+  CALL_abstract_collection___Collection___iterate(fra.me.REG[7])(fra.me.REG[7], (&(fra.me)), ((fun_t)OC_parser_prod___AStdClassdef___init_astdclassdef_2));
+  CALL_abstract_collection___Collection___iterate(fra.me.REG[8])(fra.me.REG[8], (&(fra.me)), ((fun_t)OC_parser_prod___AStdClassdef___init_astdclassdef_3));
+  stack_frame_head = fra.me.prev;
+  init_table[itpos18] = 1;
+  return;
+}
+  void OC_parser_prod___AStdClassdef___init_astdclassdef_1(struct stack_frame_t *closctx, val_t p0, struct stack_frame_t *closctx_param, fun_t clos_fun0){
+    struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+    val_t REGB0;
+    fun_t CREG[1];
+    val_t tmp;
+    /* ./parser//parser_prod.nit:468 */
+    fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+    fra.me.file = LOCATE_parser_prod;
+    fra.me.line = 0;
+    fra.me.meth = LOCATE_parser_prod___AStdClassdef___init_astdclassdef;
+    fra.me.has_broke = 0;
+    fra.me.REG_size = 2;
+    fra.me.REG[0] = NIT_NULL;
+    fra.me.REG[1] = NIT_NULL;
+    fra.me.closure_ctx = closctx_param;
+    fra.me.closure_funs = CREG;
+    fra.me.REG[0] = p0;
+    CREG[0] = clos_fun0;
+    /* ./parser//parser_prod.nit:469 */
+    REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[0], COLOR_AFormaldef, ID_AFormaldef)) /*cast AFormaldef*/;
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      nit_abort("Assert failed", NULL, LOCATE_parser_prod, 469);
+    }
+    /* ./parser//parser_prod.nit:470 */
+    REGB0 = TAG_Bool(ATTR_parser_nodes___AStdClassdef____n_formaldefs(closctx->REG[0])!=NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      nit_abort("Uninitialized attribute %s", "_n_formaldefs", LOCATE_parser_prod, 470);
+    }
+    fra.me.REG[1] = ATTR_parser_nodes___AStdClassdef____n_formaldefs(closctx->REG[0]);
+    CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+    /* ./parser//parser_prod.nit:471 */
+    CALL_parser_prod___ANode___parent__eq(fra.me.REG[0])(fra.me.REG[0], closctx->REG[0]);
+    stack_frame_head = fra.me.prev;
+    return;
+  }
+  void OC_parser_prod___AStdClassdef___init_astdclassdef_2(struct stack_frame_t *closctx, val_t p0, struct stack_frame_t *closctx_param, fun_t clos_fun0){
+    struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+    val_t REGB0;
+    fun_t CREG[1];
+    val_t tmp;
+    /* ./parser//parser_prod.nit:473 */
+    fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+    fra.me.file = LOCATE_parser_prod;
+    fra.me.line = 0;
+    fra.me.meth = LOCATE_parser_prod___AStdClassdef___init_astdclassdef;
+    fra.me.has_broke = 0;
+    fra.me.REG_size = 2;
+    fra.me.REG[0] = NIT_NULL;
+    fra.me.REG[1] = NIT_NULL;
+    fra.me.closure_ctx = closctx_param;
+    fra.me.closure_funs = CREG;
+    fra.me.REG[0] = p0;
+    CREG[0] = clos_fun0;
+    /* ./parser//parser_prod.nit:474 */
+    REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[0], COLOR_ASuperclass, ID_ASuperclass)) /*cast ASuperclass*/;
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      nit_abort("Assert failed", NULL, LOCATE_parser_prod, 474);
+    }
+    /* ./parser//parser_prod.nit:475 */
+    REGB0 = TAG_Bool(ATTR_parser_nodes___AStdClassdef____n_superclasses(closctx->REG[0])!=NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      nit_abort("Uninitialized attribute %s", "_n_superclasses", LOCATE_parser_prod, 475);
+    }
+    fra.me.REG[1] = ATTR_parser_nodes___AStdClassdef____n_superclasses(closctx->REG[0]);
+    CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+    /* ./parser//parser_prod.nit:476 */
+    CALL_parser_prod___ANode___parent__eq(fra.me.REG[0])(fra.me.REG[0], closctx->REG[0]);
+    stack_frame_head = fra.me.prev;
+    return;
+  }
+  void OC_parser_prod___AStdClassdef___init_astdclassdef_3(struct stack_frame_t *closctx, val_t p0, struct stack_frame_t *closctx_param, fun_t clos_fun0){
+    struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+    val_t REGB0;
+    fun_t CREG[1];
+    val_t tmp;
+    /* ./parser//parser_prod.nit:478 */
+    fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+    fra.me.file = LOCATE_parser_prod;
+    fra.me.line = 0;
+    fra.me.meth = LOCATE_parser_prod___AStdClassdef___init_astdclassdef;
+    fra.me.has_broke = 0;
+    fra.me.REG_size = 2;
+    fra.me.REG[0] = NIT_NULL;
+    fra.me.REG[1] = NIT_NULL;
+    fra.me.closure_ctx = closctx_param;
+    fra.me.closure_funs = CREG;
+    fra.me.REG[0] = p0;
+    CREG[0] = clos_fun0;
+    /* ./parser//parser_prod.nit:479 */
+    REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[0], COLOR_APropdef, ID_APropdef)) /*cast APropdef*/;
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      nit_abort("Assert failed", NULL, LOCATE_parser_prod, 479);
+    }
+    /* ./parser//parser_prod.nit:480 */
+    REGB0 = TAG_Bool(ATTR_parser_nodes___AStdClassdef____n_propdefs(closctx->REG[0])!=NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      nit_abort("Uninitialized attribute %s", "_n_propdefs", LOCATE_parser_prod, 480);
+    }
+    fra.me.REG[1] = ATTR_parser_nodes___AStdClassdef____n_propdefs(closctx->REG[0]);
+    CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+    /* ./parser//parser_prod.nit:481 */
+    CALL_parser_prod___ANode___parent__eq(fra.me.REG[0])(fra.me.REG[0], closctx->REG[0]);
+    stack_frame_head = fra.me.prev;
+    return;
+  }
+void parser_prod___AStdClassdef___replace_child(val_t p0, val_t p1, val_t p2){
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t REGB2;
+  val_t REGB3;
+  val_t REGB4;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 485;
+  fra.me.meth = LOCATE_parser_prod___AStdClassdef___replace_child;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  /* ./parser//parser_prod.nit:487 */
+  fra.me.REG[3] = ATTR_parser_nodes___AStdClassdef____n_doc(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+      REGB0 = REGB1;
+    }
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:488 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:489 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 489);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:490 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_ADoc, ID_ADoc)) /*cast ADoc*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 490);
+      }
+      /* ./parser//parser_prod.nit:491 */
+      ATTR_parser_nodes___AStdClassdef____n_doc(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:493 */
+      ATTR_parser_nodes___AStdClassdef____n_doc(fra.me.REG[0]) = NIT_NULL;
+    }
+    /* ./parser//parser_prod.nit:495 */
+    goto label1;
+  }
+  /* ./parser//parser_prod.nit:497 */
+  fra.me.REG[3] = ATTR_parser_nodes___AStdClassdef____n_kwredef(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+      REGB0 = REGB1;
+    }
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:498 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:499 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 499);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:500 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 500);
+      }
+      /* ./parser//parser_prod.nit:501 */
+      ATTR_parser_nodes___AStdClassdef____n_kwredef(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:503 */
+      ATTR_parser_nodes___AStdClassdef____n_kwredef(fra.me.REG[0]) = NIT_NULL;
+    }
+    /* ./parser//parser_prod.nit:505 */
+    goto label1;
+  }
+  /* ./parser//parser_prod.nit:507 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AStdClassdef____n_visibility(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_visibility", LOCATE_parser_prod, 507);
+  }
+  fra.me.REG[3] = ATTR_parser_nodes___AStdClassdef____n_visibility(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+    REGB0 = REGB1;
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:508 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:509 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 509);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:510 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_AVisibility, ID_AVisibility)) /*cast AVisibility*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 510);
+      }
+      /* ./parser//parser_prod.nit:511 */
+      ATTR_parser_nodes___AStdClassdef____n_visibility(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:513 */
+      nit_abort("Aborted", NULL, LOCATE_parser_prod, 513);
+    }
+    /* ./parser//parser_prod.nit:515 */
+    goto label1;
+  }
+  /* ./parser//parser_prod.nit:517 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AStdClassdef____n_classkind(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_classkind", LOCATE_parser_prod, 517);
+  }
+  fra.me.REG[3] = ATTR_parser_nodes___AStdClassdef____n_classkind(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+    REGB0 = REGB1;
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:518 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:519 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 519);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:520 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_AClasskind, ID_AClasskind)) /*cast AClasskind*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 520);
+      }
+      /* ./parser//parser_prod.nit:521 */
+      ATTR_parser_nodes___AStdClassdef____n_classkind(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:523 */
+      nit_abort("Aborted", NULL, LOCATE_parser_prod, 523);
+    }
+    /* ./parser//parser_prod.nit:525 */
+    goto label1;
+  }
+  /* ./parser//parser_prod.nit:527 */
+  fra.me.REG[3] = ATTR_parser_nodes___AStdClassdef____n_id(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+      REGB0 = REGB1;
+    }
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:528 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:529 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 529);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:530 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_TClassid, ID_TClassid)) /*cast TClassid*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 530);
+      }
+      /* ./parser//parser_prod.nit:531 */
+      ATTR_parser_nodes___AStdClassdef____n_id(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:533 */
+      ATTR_parser_nodes___AStdClassdef____n_id(fra.me.REG[0]) = NIT_NULL;
+    }
+    /* ./parser//parser_prod.nit:535 */
+    goto label1;
+  }
+  /* ./parser//parser_prod.nit:537 */
+  REGB0 = TAG_Int(0);
+  REGB1 = TAG_Bool(ATTR_parser_nodes___AStdClassdef____n_formaldefs(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB1)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_formaldefs", LOCATE_parser_prod, 537);
+  }
+  fra.me.REG[3] = ATTR_parser_nodes___AStdClassdef____n_formaldefs(fra.me.REG[0]);
+  REGB1 = CALL_abstract_collection___Collection___length(fra.me.REG[3])(fra.me.REG[3]);
+  /* ./../lib/standard//kernel.nit:332 */
+  while(1) {
+    /* ./../lib/standard//kernel.nit:212 */
+    REGB2 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
+    /* ./../lib/standard//kernel.nit:332 */
+    if (UNTAG_Bool(REGB2)) {
+      /* ./parser//parser_prod.nit:537 */
+      REGB2 = REGB0;
+      /* ./parser//parser_prod.nit:538 */
+      REGB3 = TAG_Bool(ATTR_parser_nodes___AStdClassdef____n_formaldefs(fra.me.REG[0])!=NIT_NULL);
+      if (UNTAG_Bool(REGB3)) {
+      } else {
+        nit_abort("Uninitialized attribute %s", "_n_formaldefs", LOCATE_parser_prod, 538);
+      }
+      fra.me.REG[3] = ATTR_parser_nodes___AStdClassdef____n_formaldefs(fra.me.REG[0]);
+      fra.me.REG[3] = CALL_abstract_collection___MapRead_____bra(fra.me.REG[3])(fra.me.REG[3], REGB2);
+      REGB3 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
+      if (UNTAG_Bool(REGB3)) {
+      } else {
+        REGB4 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+        if (UNTAG_Bool(REGB4)) {
+          REGB4 = TAG_Bool(false);
+          REGB3 = REGB4;
+        } else {
+          REGB4 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+          REGB3 = REGB4;
+        }
+      }
+      if (UNTAG_Bool(REGB3)) {
+        /* ./parser//parser_prod.nit:539 */
+        REGB3 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+        if (UNTAG_Bool(REGB3)) {
+        } else {
+          REGB4 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+          if (UNTAG_Bool(REGB4)) {
+            REGB4 = TAG_Bool(false);
+            REGB3 = REGB4;
+          } else {
+            REGB4 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+            REGB3 = REGB4;
+          }
+        }
+        REGB3 = TAG_Bool(!UNTAG_Bool(REGB3));
+        if (UNTAG_Bool(REGB3)) {
+          /* ./parser//parser_prod.nit:540 */
+          REGB3 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_AFormaldef, ID_AFormaldef)) /*cast AFormaldef*/;
+          if (UNTAG_Bool(REGB3)) {
+          } else {
+            nit_abort("Assert failed", NULL, LOCATE_parser_prod, 540);
+          }
+          /* ./parser//parser_prod.nit:541 */
+          REGB3 = TAG_Bool(ATTR_parser_nodes___AStdClassdef____n_formaldefs(fra.me.REG[0])!=NIT_NULL);
+          if (UNTAG_Bool(REGB3)) {
+          } else {
+            nit_abort("Uninitialized attribute %s", "_n_formaldefs", LOCATE_parser_prod, 541);
+          }
+          fra.me.REG[3] = ATTR_parser_nodes___AStdClassdef____n_formaldefs(fra.me.REG[0]);
+          CALL_abstract_collection___Map_____braeq(fra.me.REG[3])(fra.me.REG[3], REGB2, fra.me.REG[2]);
+          /* ./parser//parser_prod.nit:542 */
+          REGB3 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+          if (UNTAG_Bool(REGB3)) {
+            nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 542);
+          }
+          CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+        } else {
+          /* ./parser//parser_prod.nit:544 */
+          REGB3 = TAG_Bool(ATTR_parser_nodes___AStdClassdef____n_formaldefs(fra.me.REG[0])!=NIT_NULL);
+          if (UNTAG_Bool(REGB3)) {
+          } else {
+            nit_abort("Uninitialized attribute %s", "_n_formaldefs", LOCATE_parser_prod, 544);
+          }
+          fra.me.REG[3] = ATTR_parser_nodes___AStdClassdef____n_formaldefs(fra.me.REG[0]);
+          CALL_abstract_collection___Map___remove_at(fra.me.REG[3])(fra.me.REG[3], REGB2);
+        }
+        /* ./parser//parser_prod.nit:546 */
+        goto label1;
+      }
+      /* ./../lib/standard//kernel.nit:334 */
+      REGB2 = TAG_Int(1);
+      /* ./../lib/standard//kernel.nit:215 */
+      REGB2 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB2));
+      /* ./../lib/standard//kernel.nit:334 */
+      REGB0 = REGB2;
+    } else {
+      /* ./../lib/standard//kernel.nit:332 */
+      goto label2;
+    }
+  }
+  label2: while(0);
+  /* ./parser//parser_prod.nit:549 */
+  REGB0 = TAG_Int(0);
+  REGB1 = TAG_Bool(ATTR_parser_nodes___AStdClassdef____n_superclasses(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB1)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_superclasses", LOCATE_parser_prod, 549);
+  }
+  fra.me.REG[3] = ATTR_parser_nodes___AStdClassdef____n_superclasses(fra.me.REG[0]);
+  REGB1 = CALL_abstract_collection___Collection___length(fra.me.REG[3])(fra.me.REG[3]);
+  /* ./../lib/standard//kernel.nit:332 */
+  while(1) {
+    /* ./../lib/standard//kernel.nit:212 */
+    REGB2 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
+    /* ./../lib/standard//kernel.nit:332 */
+    if (UNTAG_Bool(REGB2)) {
+      /* ./parser//parser_prod.nit:549 */
+      REGB2 = REGB0;
+      /* ./parser//parser_prod.nit:550 */
+      REGB3 = TAG_Bool(ATTR_parser_nodes___AStdClassdef____n_superclasses(fra.me.REG[0])!=NIT_NULL);
+      if (UNTAG_Bool(REGB3)) {
+      } else {
+        nit_abort("Uninitialized attribute %s", "_n_superclasses", LOCATE_parser_prod, 550);
+      }
+      fra.me.REG[3] = ATTR_parser_nodes___AStdClassdef____n_superclasses(fra.me.REG[0]);
+      fra.me.REG[3] = CALL_abstract_collection___MapRead_____bra(fra.me.REG[3])(fra.me.REG[3], REGB2);
+      REGB3 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
+      if (UNTAG_Bool(REGB3)) {
+      } else {
+        REGB4 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+        if (UNTAG_Bool(REGB4)) {
+          REGB4 = TAG_Bool(false);
+          REGB3 = REGB4;
+        } else {
+          REGB4 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+          REGB3 = REGB4;
+        }
+      }
+      if (UNTAG_Bool(REGB3)) {
+        /* ./parser//parser_prod.nit:551 */
+        REGB3 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+        if (UNTAG_Bool(REGB3)) {
+        } else {
+          REGB4 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+          if (UNTAG_Bool(REGB4)) {
+            REGB4 = TAG_Bool(false);
+            REGB3 = REGB4;
+          } else {
+            REGB4 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+            REGB3 = REGB4;
+          }
+        }
+        REGB3 = TAG_Bool(!UNTAG_Bool(REGB3));
+        if (UNTAG_Bool(REGB3)) {
+          /* ./parser//parser_prod.nit:552 */
+          REGB3 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_ASuperclass, ID_ASuperclass)) /*cast ASuperclass*/;
+          if (UNTAG_Bool(REGB3)) {
+          } else {
+            nit_abort("Assert failed", NULL, LOCATE_parser_prod, 552);
+          }
+          /* ./parser//parser_prod.nit:553 */
+          REGB3 = TAG_Bool(ATTR_parser_nodes___AStdClassdef____n_superclasses(fra.me.REG[0])!=NIT_NULL);
+          if (UNTAG_Bool(REGB3)) {
+          } else {
+            nit_abort("Uninitialized attribute %s", "_n_superclasses", LOCATE_parser_prod, 553);
+          }
+          fra.me.REG[3] = ATTR_parser_nodes___AStdClassdef____n_superclasses(fra.me.REG[0]);
+          CALL_abstract_collection___Map_____braeq(fra.me.REG[3])(fra.me.REG[3], REGB2, fra.me.REG[2]);
+          /* ./parser//parser_prod.nit:554 */
+          REGB3 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+          if (UNTAG_Bool(REGB3)) {
+            nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 554);
+          }
+          CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+        } else {
+          /* ./parser//parser_prod.nit:556 */
+          REGB3 = TAG_Bool(ATTR_parser_nodes___AStdClassdef____n_superclasses(fra.me.REG[0])!=NIT_NULL);
+          if (UNTAG_Bool(REGB3)) {
+          } else {
+            nit_abort("Uninitialized attribute %s", "_n_superclasses", LOCATE_parser_prod, 556);
+          }
+          fra.me.REG[3] = ATTR_parser_nodes___AStdClassdef____n_superclasses(fra.me.REG[0]);
+          CALL_abstract_collection___Map___remove_at(fra.me.REG[3])(fra.me.REG[3], REGB2);
+        }
+        /* ./parser//parser_prod.nit:558 */
+        goto label1;
+      }
+      /* ./../lib/standard//kernel.nit:334 */
+      REGB2 = TAG_Int(1);
+      /* ./../lib/standard//kernel.nit:215 */
+      REGB2 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB2));
+      /* ./../lib/standard//kernel.nit:334 */
+      REGB0 = REGB2;
+    } else {
+      /* ./../lib/standard//kernel.nit:332 */
+      goto label3;
+    }
+  }
+  label3: while(0);
+  /* ./parser//parser_prod.nit:561 */
+  REGB0 = TAG_Int(0);
+  REGB1 = TAG_Bool(ATTR_parser_nodes___AStdClassdef____n_propdefs(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB1)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_propdefs", LOCATE_parser_prod, 561);
+  }
+  fra.me.REG[3] = ATTR_parser_nodes___AStdClassdef____n_propdefs(fra.me.REG[0]);
+  REGB1 = CALL_abstract_collection___Collection___length(fra.me.REG[3])(fra.me.REG[3]);
+  /* ./../lib/standard//kernel.nit:332 */
+  while(1) {
+    /* ./../lib/standard//kernel.nit:212 */
+    REGB2 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
+    /* ./../lib/standard//kernel.nit:332 */
+    if (UNTAG_Bool(REGB2)) {
+      /* ./parser//parser_prod.nit:561 */
+      REGB2 = REGB0;
+      /* ./parser//parser_prod.nit:562 */
+      REGB3 = TAG_Bool(ATTR_parser_nodes___AStdClassdef____n_propdefs(fra.me.REG[0])!=NIT_NULL);
+      if (UNTAG_Bool(REGB3)) {
+      } else {
+        nit_abort("Uninitialized attribute %s", "_n_propdefs", LOCATE_parser_prod, 562);
+      }
+      fra.me.REG[3] = ATTR_parser_nodes___AStdClassdef____n_propdefs(fra.me.REG[0]);
+      fra.me.REG[3] = CALL_abstract_collection___MapRead_____bra(fra.me.REG[3])(fra.me.REG[3], REGB2);
+      REGB3 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
+      if (UNTAG_Bool(REGB3)) {
+      } else {
+        REGB4 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+        if (UNTAG_Bool(REGB4)) {
+          REGB4 = TAG_Bool(false);
+          REGB3 = REGB4;
+        } else {
+          REGB4 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+          REGB3 = REGB4;
+        }
+      }
+      if (UNTAG_Bool(REGB3)) {
+        /* ./parser//parser_prod.nit:563 */
+        REGB3 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+        if (UNTAG_Bool(REGB3)) {
+        } else {
+          REGB4 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+          if (UNTAG_Bool(REGB4)) {
+            REGB4 = TAG_Bool(false);
+            REGB3 = REGB4;
+          } else {
+            REGB4 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+            REGB3 = REGB4;
+          }
+        }
+        REGB3 = TAG_Bool(!UNTAG_Bool(REGB3));
+        if (UNTAG_Bool(REGB3)) {
+          /* ./parser//parser_prod.nit:564 */
+          REGB3 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_APropdef, ID_APropdef)) /*cast APropdef*/;
+          if (UNTAG_Bool(REGB3)) {
+          } else {
+            nit_abort("Assert failed", NULL, LOCATE_parser_prod, 564);
+          }
+          /* ./parser//parser_prod.nit:565 */
+          REGB3 = TAG_Bool(ATTR_parser_nodes___AStdClassdef____n_propdefs(fra.me.REG[0])!=NIT_NULL);
+          if (UNTAG_Bool(REGB3)) {
+          } else {
+            nit_abort("Uninitialized attribute %s", "_n_propdefs", LOCATE_parser_prod, 565);
+          }
+          fra.me.REG[3] = ATTR_parser_nodes___AStdClassdef____n_propdefs(fra.me.REG[0]);
+          CALL_abstract_collection___Map_____braeq(fra.me.REG[3])(fra.me.REG[3], REGB2, fra.me.REG[2]);
+          /* ./parser//parser_prod.nit:566 */
+          REGB3 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+          if (UNTAG_Bool(REGB3)) {
+            nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 566);
+          }
+          CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+        } else {
+          /* ./parser//parser_prod.nit:568 */
+          REGB3 = TAG_Bool(ATTR_parser_nodes___AStdClassdef____n_propdefs(fra.me.REG[0])!=NIT_NULL);
+          if (UNTAG_Bool(REGB3)) {
+          } else {
+            nit_abort("Uninitialized attribute %s", "_n_propdefs", LOCATE_parser_prod, 568);
+          }
+          fra.me.REG[3] = ATTR_parser_nodes___AStdClassdef____n_propdefs(fra.me.REG[0]);
+          CALL_abstract_collection___Map___remove_at(fra.me.REG[3])(fra.me.REG[3], REGB2);
+        }
+        /* ./parser//parser_prod.nit:570 */
+        goto label1;
+      }
+      /* ./../lib/standard//kernel.nit:334 */
+      REGB2 = TAG_Int(1);
+      /* ./../lib/standard//kernel.nit:215 */
+      REGB2 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB2));
+      /* ./../lib/standard//kernel.nit:334 */
+      REGB0 = REGB2;
+    } else {
+      /* ./../lib/standard//kernel.nit:332 */
+      goto label4;
+    }
+  }
+  label4: while(0);
+  label1: while(0);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser_prod___AStdClassdef___visit_all(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 575;
+  fra.me.meth = LOCATE_parser_prod___AStdClassdef___visit_all;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:577 */
+  fra.me.REG[2] = ATTR_parser_nodes___AStdClassdef____n_doc(fra.me.REG[0]);
+  REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:578 */
+    fra.me.REG[2] = ATTR_parser_nodes___AStdClassdef____n_doc(fra.me.REG[0]);
+    REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_ADoc, ID_ADoc)) /*cast ADoc*/;
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      nit_abort("Cast failed", NULL, LOCATE_parser_prod, 578);
+    }
+    CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  }
+  /* ./parser//parser_prod.nit:580 */
+  fra.me.REG[2] = ATTR_parser_nodes___AStdClassdef____n_kwredef(fra.me.REG[0]);
+  REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:581 */
+    fra.me.REG[2] = ATTR_parser_nodes___AStdClassdef____n_kwredef(fra.me.REG[0]);
+    REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      nit_abort("Cast failed", NULL, LOCATE_parser_prod, 581);
+    }
+    CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  }
+  /* ./parser//parser_prod.nit:583 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AStdClassdef____n_visibility(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_visibility", LOCATE_parser_prod, 583);
+  }
+  fra.me.REG[2] = ATTR_parser_nodes___AStdClassdef____n_visibility(fra.me.REG[0]);
+  CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser_prod.nit:584 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AStdClassdef____n_classkind(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_classkind", LOCATE_parser_prod, 584);
+  }
+  fra.me.REG[2] = ATTR_parser_nodes___AStdClassdef____n_classkind(fra.me.REG[0]);
+  CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser_prod.nit:585 */
+  fra.me.REG[2] = ATTR_parser_nodes___AStdClassdef____n_id(fra.me.REG[0]);
+  REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:586 */
+    fra.me.REG[2] = ATTR_parser_nodes___AStdClassdef____n_id(fra.me.REG[0]);
+    REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_TClassid, ID_TClassid)) /*cast TClassid*/;
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      nit_abort("Cast failed", NULL, LOCATE_parser_prod, 586);
+    }
+    CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  }
+  /* ./parser//parser_prod.nit:588 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AStdClassdef____n_formaldefs(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_formaldefs", LOCATE_parser_prod, 588);
+  }
+  fra.me.REG[2] = ATTR_parser_nodes___AStdClassdef____n_formaldefs(fra.me.REG[0]);
+  CALL_abstract_collection___Collection___iterate(fra.me.REG[2])(fra.me.REG[2], (&(fra.me)), ((fun_t)OC_parser_prod___AStdClassdef___visit_all_1));
+  /* ./parser//parser_prod.nit:591 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AStdClassdef____n_superclasses(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_superclasses", LOCATE_parser_prod, 591);
+  }
+  fra.me.REG[2] = ATTR_parser_nodes___AStdClassdef____n_superclasses(fra.me.REG[0]);
+  CALL_abstract_collection___Collection___iterate(fra.me.REG[2])(fra.me.REG[2], (&(fra.me)), ((fun_t)OC_parser_prod___AStdClassdef___visit_all_2));
+  /* ./parser//parser_prod.nit:594 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AStdClassdef____n_propdefs(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_propdefs", LOCATE_parser_prod, 594);
+  }
+  fra.me.REG[0] = ATTR_parser_nodes___AStdClassdef____n_propdefs(fra.me.REG[0]);
+  CALL_abstract_collection___Collection___iterate(fra.me.REG[0])(fra.me.REG[0], (&(fra.me)), ((fun_t)OC_parser_prod___AStdClassdef___visit_all_3));
+  stack_frame_head = fra.me.prev;
+  return;
+}
+  void OC_parser_prod___AStdClassdef___visit_all_1(struct stack_frame_t *closctx, val_t p0, struct stack_frame_t *closctx_param, fun_t clos_fun0){
+    struct {struct stack_frame_t me;} fra;
+    fun_t CREG[1];
+    val_t tmp;
+    fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+    fra.me.file = LOCATE_parser_prod;
+    fra.me.line = 0;
+    fra.me.meth = LOCATE_parser_prod___AStdClassdef___visit_all;
+    fra.me.has_broke = 0;
+    fra.me.REG_size = 1;
+    fra.me.REG[0] = NIT_NULL;
+    fra.me.closure_ctx = closctx_param;
+    fra.me.closure_funs = CREG;
+    fra.me.REG[0] = p0;
+    CREG[0] = clos_fun0;
+    /* ./parser//parser_prod.nit:589 */
+    CALL_parser_prod___Visitor___enter_visit(closctx->REG[1])(closctx->REG[1], fra.me.REG[0]);
+    stack_frame_head = fra.me.prev;
+    return;
+  }
+  void OC_parser_prod___AStdClassdef___visit_all_2(struct stack_frame_t *closctx, val_t p0, struct stack_frame_t *closctx_param, fun_t clos_fun0){
+    struct {struct stack_frame_t me;} fra;
+    fun_t CREG[1];
+    val_t tmp;
+    fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+    fra.me.file = LOCATE_parser_prod;
+    fra.me.line = 0;
+    fra.me.meth = LOCATE_parser_prod___AStdClassdef___visit_all;
+    fra.me.has_broke = 0;
+    fra.me.REG_size = 1;
+    fra.me.REG[0] = NIT_NULL;
+    fra.me.closure_ctx = closctx_param;
+    fra.me.closure_funs = CREG;
+    fra.me.REG[0] = p0;
+    CREG[0] = clos_fun0;
+    /* ./parser//parser_prod.nit:592 */
+    CALL_parser_prod___Visitor___enter_visit(closctx->REG[1])(closctx->REG[1], fra.me.REG[0]);
+    stack_frame_head = fra.me.prev;
+    return;
+  }
+  void OC_parser_prod___AStdClassdef___visit_all_3(struct stack_frame_t *closctx, val_t p0, struct stack_frame_t *closctx_param, fun_t clos_fun0){
+    struct {struct stack_frame_t me;} fra;
+    fun_t CREG[1];
+    val_t tmp;
+    fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+    fra.me.file = LOCATE_parser_prod;
+    fra.me.line = 0;
+    fra.me.meth = LOCATE_parser_prod___AStdClassdef___visit_all;
+    fra.me.has_broke = 0;
+    fra.me.REG_size = 1;
+    fra.me.REG[0] = NIT_NULL;
+    fra.me.closure_ctx = closctx_param;
+    fra.me.closure_funs = CREG;
+    fra.me.REG[0] = p0;
+    CREG[0] = clos_fun0;
+    /* ./parser//parser_prod.nit:595 */
+    CALL_parser_prod___Visitor___enter_visit(closctx->REG[1])(closctx->REG[1], fra.me.REG[0]);
+    stack_frame_head = fra.me.prev;
+    return;
+  }
+void parser_prod___ATopClassdef___empty_init(val_t p0, int* init_table){
+  int itpos19 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ATopClassdef].i;
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  if (init_table[itpos19]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 600;
+  fra.me.meth = LOCATE_parser_prod___ATopClassdef___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos19] = 1;
+  return;
+}
+void parser_prod___ATopClassdef___init_atopclassdef(val_t p0, val_t p1, int* init_table){
+  int itpos20 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ATopClassdef].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  if (init_table[itpos20]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 602;
+  fra.me.meth = LOCATE_parser_prod___ATopClassdef___init_atopclassdef;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:606 */
+  CALL_parser_prod___ATopClassdef___empty_init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  CALL_abstract_collection___Collection___iterate(fra.me.REG[1])(fra.me.REG[1], (&(fra.me)), ((fun_t)OC_parser_prod___ATopClassdef___init_atopclassdef_1));
+  stack_frame_head = fra.me.prev;
+  init_table[itpos20] = 1;
+  return;
+}
+  void OC_parser_prod___ATopClassdef___init_atopclassdef_1(struct stack_frame_t *closctx, val_t p0, struct stack_frame_t *closctx_param, fun_t clos_fun0){
+    struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+    val_t REGB0;
+    fun_t CREG[1];
+    val_t tmp;
+    /* ./parser//parser_prod.nit:607 */
+    fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+    fra.me.file = LOCATE_parser_prod;
+    fra.me.line = 0;
+    fra.me.meth = LOCATE_parser_prod___ATopClassdef___init_atopclassdef;
+    fra.me.has_broke = 0;
+    fra.me.REG_size = 2;
+    fra.me.REG[0] = NIT_NULL;
+    fra.me.REG[1] = NIT_NULL;
+    fra.me.closure_ctx = closctx_param;
+    fra.me.closure_funs = CREG;
+    fra.me.REG[0] = p0;
+    CREG[0] = clos_fun0;
+    /* ./parser//parser_prod.nit:608 */
+    REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[0], COLOR_APropdef, ID_APropdef)) /*cast APropdef*/;
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      nit_abort("Assert failed", NULL, LOCATE_parser_prod, 608);
+    }
+    /* ./parser//parser_prod.nit:609 */
+    REGB0 = TAG_Bool(ATTR_parser_nodes___ATopClassdef____n_propdefs(closctx->REG[0])!=NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      nit_abort("Uninitialized attribute %s", "_n_propdefs", LOCATE_parser_prod, 609);
+    }
+    fra.me.REG[1] = ATTR_parser_nodes___ATopClassdef____n_propdefs(closctx->REG[0]);
+    CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+    /* ./parser//parser_prod.nit:610 */
+    CALL_parser_prod___ANode___parent__eq(fra.me.REG[0])(fra.me.REG[0], closctx->REG[0]);
+    stack_frame_head = fra.me.prev;
+    return;
+  }
+void parser_prod___ATopClassdef___replace_child(val_t p0, val_t p1, val_t p2){
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t REGB2;
+  val_t REGB3;
+  val_t REGB4;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 614;
+  fra.me.meth = LOCATE_parser_prod___ATopClassdef___replace_child;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  /* ./parser//parser_prod.nit:616 */
+  REGB0 = TAG_Int(0);
+  REGB1 = TAG_Bool(ATTR_parser_nodes___ATopClassdef____n_propdefs(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB1)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_propdefs", LOCATE_parser_prod, 616);
+  }
+  fra.me.REG[3] = ATTR_parser_nodes___ATopClassdef____n_propdefs(fra.me.REG[0]);
+  REGB1 = CALL_abstract_collection___Collection___length(fra.me.REG[3])(fra.me.REG[3]);
+  /* ./../lib/standard//kernel.nit:332 */
+  while(1) {
+    /* ./../lib/standard//kernel.nit:212 */
+    REGB2 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
+    /* ./../lib/standard//kernel.nit:332 */
+    if (UNTAG_Bool(REGB2)) {
+      /* ./parser//parser_prod.nit:616 */
+      REGB2 = REGB0;
+      /* ./parser//parser_prod.nit:617 */
+      REGB3 = TAG_Bool(ATTR_parser_nodes___ATopClassdef____n_propdefs(fra.me.REG[0])!=NIT_NULL);
+      if (UNTAG_Bool(REGB3)) {
+      } else {
+        nit_abort("Uninitialized attribute %s", "_n_propdefs", LOCATE_parser_prod, 617);
+      }
+      fra.me.REG[3] = ATTR_parser_nodes___ATopClassdef____n_propdefs(fra.me.REG[0]);
+      fra.me.REG[3] = CALL_abstract_collection___MapRead_____bra(fra.me.REG[3])(fra.me.REG[3], REGB2);
+      REGB3 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
+      if (UNTAG_Bool(REGB3)) {
+      } else {
+        REGB4 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+        if (UNTAG_Bool(REGB4)) {
+          REGB4 = TAG_Bool(false);
+          REGB3 = REGB4;
+        } else {
+          REGB4 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+          REGB3 = REGB4;
+        }
+      }
+      if (UNTAG_Bool(REGB3)) {
+        /* ./parser//parser_prod.nit:618 */
+        REGB3 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+        if (UNTAG_Bool(REGB3)) {
+        } else {
+          REGB4 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+          if (UNTAG_Bool(REGB4)) {
+            REGB4 = TAG_Bool(false);
+            REGB3 = REGB4;
+          } else {
+            REGB4 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+            REGB3 = REGB4;
+          }
+        }
+        REGB3 = TAG_Bool(!UNTAG_Bool(REGB3));
+        if (UNTAG_Bool(REGB3)) {
+          /* ./parser//parser_prod.nit:619 */
+          REGB3 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_APropdef, ID_APropdef)) /*cast APropdef*/;
+          if (UNTAG_Bool(REGB3)) {
+          } else {
+            nit_abort("Assert failed", NULL, LOCATE_parser_prod, 619);
+          }
+          /* ./parser//parser_prod.nit:620 */
+          REGB3 = TAG_Bool(ATTR_parser_nodes___ATopClassdef____n_propdefs(fra.me.REG[0])!=NIT_NULL);
+          if (UNTAG_Bool(REGB3)) {
+          } else {
+            nit_abort("Uninitialized attribute %s", "_n_propdefs", LOCATE_parser_prod, 620);
+          }
+          fra.me.REG[3] = ATTR_parser_nodes___ATopClassdef____n_propdefs(fra.me.REG[0]);
+          CALL_abstract_collection___Map_____braeq(fra.me.REG[3])(fra.me.REG[3], REGB2, fra.me.REG[2]);
+          /* ./parser//parser_prod.nit:621 */
+          REGB3 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+          if (UNTAG_Bool(REGB3)) {
+            nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 621);
+          }
+          CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+        } else {
+          /* ./parser//parser_prod.nit:623 */
+          REGB3 = TAG_Bool(ATTR_parser_nodes___ATopClassdef____n_propdefs(fra.me.REG[0])!=NIT_NULL);
+          if (UNTAG_Bool(REGB3)) {
+          } else {
+            nit_abort("Uninitialized attribute %s", "_n_propdefs", LOCATE_parser_prod, 623);
+          }
+          fra.me.REG[3] = ATTR_parser_nodes___ATopClassdef____n_propdefs(fra.me.REG[0]);
+          CALL_abstract_collection___Map___remove_at(fra.me.REG[3])(fra.me.REG[3], REGB2);
+        }
+        /* ./parser//parser_prod.nit:625 */
+        goto label1;
+      }
+      /* ./../lib/standard//kernel.nit:334 */
+      REGB2 = TAG_Int(1);
+      /* ./../lib/standard//kernel.nit:215 */
+      REGB2 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB2));
+      /* ./../lib/standard//kernel.nit:334 */
+      REGB0 = REGB2;
+    } else {
+      /* ./../lib/standard//kernel.nit:332 */
+      goto label2;
+    }
+  }
+  label2: while(0);
+  label1: while(0);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser_prod___ATopClassdef___visit_all(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 630;
+  fra.me.meth = LOCATE_parser_prod___ATopClassdef___visit_all;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:632 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ATopClassdef____n_propdefs(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_propdefs", LOCATE_parser_prod, 632);
+  }
+  fra.me.REG[0] = ATTR_parser_nodes___ATopClassdef____n_propdefs(fra.me.REG[0]);
+  CALL_abstract_collection___Collection___iterate(fra.me.REG[0])(fra.me.REG[0], (&(fra.me)), ((fun_t)OC_parser_prod___ATopClassdef___visit_all_1));
+  stack_frame_head = fra.me.prev;
+  return;
+}
+  void OC_parser_prod___ATopClassdef___visit_all_1(struct stack_frame_t *closctx, val_t p0, struct stack_frame_t *closctx_param, fun_t clos_fun0){
+    struct {struct stack_frame_t me;} fra;
+    fun_t CREG[1];
+    val_t tmp;
+    fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+    fra.me.file = LOCATE_parser_prod;
+    fra.me.line = 0;
+    fra.me.meth = LOCATE_parser_prod___ATopClassdef___visit_all;
+    fra.me.has_broke = 0;
+    fra.me.REG_size = 1;
+    fra.me.REG[0] = NIT_NULL;
+    fra.me.closure_ctx = closctx_param;
+    fra.me.closure_funs = CREG;
+    fra.me.REG[0] = p0;
+    CREG[0] = clos_fun0;
+    /* ./parser//parser_prod.nit:633 */
+    CALL_parser_prod___Visitor___enter_visit(closctx->REG[1])(closctx->REG[1], fra.me.REG[0]);
+    stack_frame_head = fra.me.prev;
+    return;
+  }
+void parser_prod___AMainClassdef___empty_init(val_t p0, int* init_table){
+  int itpos21 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_AMainClassdef].i;
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  if (init_table[itpos21]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 638;
+  fra.me.meth = LOCATE_parser_prod___AMainClassdef___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos21] = 1;
+  return;
+}
+void parser_prod___AMainClassdef___init_amainclassdef(val_t p0, val_t p1, int* init_table){
+  int itpos22 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_AMainClassdef].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  if (init_table[itpos22]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 640;
+  fra.me.meth = LOCATE_parser_prod___AMainClassdef___init_amainclassdef;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:644 */
+  CALL_parser_prod___AMainClassdef___empty_init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  CALL_abstract_collection___Collection___iterate(fra.me.REG[1])(fra.me.REG[1], (&(fra.me)), ((fun_t)OC_parser_prod___AMainClassdef___init_amainclassdef_1));
+  stack_frame_head = fra.me.prev;
+  init_table[itpos22] = 1;
+  return;
+}
+  void OC_parser_prod___AMainClassdef___init_amainclassdef_1(struct stack_frame_t *closctx, val_t p0, struct stack_frame_t *closctx_param, fun_t clos_fun0){
+    struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+    val_t REGB0;
+    fun_t CREG[1];
+    val_t tmp;
+    /* ./parser//parser_prod.nit:645 */
+    fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+    fra.me.file = LOCATE_parser_prod;
+    fra.me.line = 0;
+    fra.me.meth = LOCATE_parser_prod___AMainClassdef___init_amainclassdef;
+    fra.me.has_broke = 0;
+    fra.me.REG_size = 2;
+    fra.me.REG[0] = NIT_NULL;
+    fra.me.REG[1] = NIT_NULL;
+    fra.me.closure_ctx = closctx_param;
+    fra.me.closure_funs = CREG;
+    fra.me.REG[0] = p0;
+    CREG[0] = clos_fun0;
+    /* ./parser//parser_prod.nit:646 */
+    REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[0], COLOR_APropdef, ID_APropdef)) /*cast APropdef*/;
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      nit_abort("Assert failed", NULL, LOCATE_parser_prod, 646);
+    }
+    /* ./parser//parser_prod.nit:647 */
+    REGB0 = TAG_Bool(ATTR_parser_nodes___AMainClassdef____n_propdefs(closctx->REG[0])!=NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      nit_abort("Uninitialized attribute %s", "_n_propdefs", LOCATE_parser_prod, 647);
+    }
+    fra.me.REG[1] = ATTR_parser_nodes___AMainClassdef____n_propdefs(closctx->REG[0]);
+    CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+    /* ./parser//parser_prod.nit:648 */
+    CALL_parser_prod___ANode___parent__eq(fra.me.REG[0])(fra.me.REG[0], closctx->REG[0]);
+    stack_frame_head = fra.me.prev;
+    return;
+  }
+void parser_prod___AMainClassdef___replace_child(val_t p0, val_t p1, val_t p2){
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t REGB2;
+  val_t REGB3;
+  val_t REGB4;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 652;
+  fra.me.meth = LOCATE_parser_prod___AMainClassdef___replace_child;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  /* ./parser//parser_prod.nit:654 */
+  REGB0 = TAG_Int(0);
+  REGB1 = TAG_Bool(ATTR_parser_nodes___AMainClassdef____n_propdefs(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB1)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_propdefs", LOCATE_parser_prod, 654);
+  }
+  fra.me.REG[3] = ATTR_parser_nodes___AMainClassdef____n_propdefs(fra.me.REG[0]);
+  REGB1 = CALL_abstract_collection___Collection___length(fra.me.REG[3])(fra.me.REG[3]);
+  /* ./../lib/standard//kernel.nit:332 */
+  while(1) {
+    /* ./../lib/standard//kernel.nit:212 */
+    REGB2 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
+    /* ./../lib/standard//kernel.nit:332 */
+    if (UNTAG_Bool(REGB2)) {
+      /* ./parser//parser_prod.nit:654 */
+      REGB2 = REGB0;
+      /* ./parser//parser_prod.nit:655 */
+      REGB3 = TAG_Bool(ATTR_parser_nodes___AMainClassdef____n_propdefs(fra.me.REG[0])!=NIT_NULL);
+      if (UNTAG_Bool(REGB3)) {
+      } else {
+        nit_abort("Uninitialized attribute %s", "_n_propdefs", LOCATE_parser_prod, 655);
+      }
+      fra.me.REG[3] = ATTR_parser_nodes___AMainClassdef____n_propdefs(fra.me.REG[0]);
+      fra.me.REG[3] = CALL_abstract_collection___MapRead_____bra(fra.me.REG[3])(fra.me.REG[3], REGB2);
+      REGB3 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
+      if (UNTAG_Bool(REGB3)) {
+      } else {
+        REGB4 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+        if (UNTAG_Bool(REGB4)) {
+          REGB4 = TAG_Bool(false);
+          REGB3 = REGB4;
+        } else {
+          REGB4 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+          REGB3 = REGB4;
+        }
+      }
+      if (UNTAG_Bool(REGB3)) {
+        /* ./parser//parser_prod.nit:656 */
+        REGB3 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+        if (UNTAG_Bool(REGB3)) {
+        } else {
+          REGB4 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+          if (UNTAG_Bool(REGB4)) {
+            REGB4 = TAG_Bool(false);
+            REGB3 = REGB4;
+          } else {
+            REGB4 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+            REGB3 = REGB4;
+          }
+        }
+        REGB3 = TAG_Bool(!UNTAG_Bool(REGB3));
+        if (UNTAG_Bool(REGB3)) {
+          /* ./parser//parser_prod.nit:657 */
+          REGB3 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_APropdef, ID_APropdef)) /*cast APropdef*/;
+          if (UNTAG_Bool(REGB3)) {
+          } else {
+            nit_abort("Assert failed", NULL, LOCATE_parser_prod, 657);
+          }
+          /* ./parser//parser_prod.nit:658 */
+          REGB3 = TAG_Bool(ATTR_parser_nodes___AMainClassdef____n_propdefs(fra.me.REG[0])!=NIT_NULL);
+          if (UNTAG_Bool(REGB3)) {
+          } else {
+            nit_abort("Uninitialized attribute %s", "_n_propdefs", LOCATE_parser_prod, 658);
+          }
+          fra.me.REG[3] = ATTR_parser_nodes___AMainClassdef____n_propdefs(fra.me.REG[0]);
+          CALL_abstract_collection___Map_____braeq(fra.me.REG[3])(fra.me.REG[3], REGB2, fra.me.REG[2]);
+          /* ./parser//parser_prod.nit:659 */
+          REGB3 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+          if (UNTAG_Bool(REGB3)) {
+            nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 659);
+          }
+          CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+        } else {
+          /* ./parser//parser_prod.nit:661 */
+          REGB3 = TAG_Bool(ATTR_parser_nodes___AMainClassdef____n_propdefs(fra.me.REG[0])!=NIT_NULL);
+          if (UNTAG_Bool(REGB3)) {
+          } else {
+            nit_abort("Uninitialized attribute %s", "_n_propdefs", LOCATE_parser_prod, 661);
+          }
+          fra.me.REG[3] = ATTR_parser_nodes___AMainClassdef____n_propdefs(fra.me.REG[0]);
+          CALL_abstract_collection___Map___remove_at(fra.me.REG[3])(fra.me.REG[3], REGB2);
+        }
+        /* ./parser//parser_prod.nit:663 */
+        goto label1;
+      }
+      /* ./../lib/standard//kernel.nit:334 */
+      REGB2 = TAG_Int(1);
+      /* ./../lib/standard//kernel.nit:215 */
+      REGB2 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB2));
+      /* ./../lib/standard//kernel.nit:334 */
+      REGB0 = REGB2;
+    } else {
+      /* ./../lib/standard//kernel.nit:332 */
+      goto label2;
+    }
+  }
+  label2: while(0);
+  label1: while(0);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser_prod___AMainClassdef___visit_all(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 668;
+  fra.me.meth = LOCATE_parser_prod___AMainClassdef___visit_all;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:670 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AMainClassdef____n_propdefs(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_propdefs", LOCATE_parser_prod, 670);
+  }
+  fra.me.REG[0] = ATTR_parser_nodes___AMainClassdef____n_propdefs(fra.me.REG[0]);
+  CALL_abstract_collection___Collection___iterate(fra.me.REG[0])(fra.me.REG[0], (&(fra.me)), ((fun_t)OC_parser_prod___AMainClassdef___visit_all_1));
+  stack_frame_head = fra.me.prev;
+  return;
+}
+  void OC_parser_prod___AMainClassdef___visit_all_1(struct stack_frame_t *closctx, val_t p0, struct stack_frame_t *closctx_param, fun_t clos_fun0){
+    struct {struct stack_frame_t me;} fra;
+    fun_t CREG[1];
+    val_t tmp;
+    fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+    fra.me.file = LOCATE_parser_prod;
+    fra.me.line = 0;
+    fra.me.meth = LOCATE_parser_prod___AMainClassdef___visit_all;
+    fra.me.has_broke = 0;
+    fra.me.REG_size = 1;
+    fra.me.REG[0] = NIT_NULL;
+    fra.me.closure_ctx = closctx_param;
+    fra.me.closure_funs = CREG;
+    fra.me.REG[0] = p0;
+    CREG[0] = clos_fun0;
+    /* ./parser//parser_prod.nit:671 */
+    CALL_parser_prod___Visitor___enter_visit(closctx->REG[1])(closctx->REG[1], fra.me.REG[0]);
+    stack_frame_head = fra.me.prev;
+    return;
+  }
+void parser_prod___AConcreteClasskind___empty_init(val_t p0, int* init_table){
+  int itpos23 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_AConcreteClasskind].i;
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  if (init_table[itpos23]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 676;
+  fra.me.meth = LOCATE_parser_prod___AConcreteClasskind___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos23] = 1;
+  return;
+}
+void parser_prod___AConcreteClasskind___init_aconcreteclasskind(val_t p0, val_t p1, int* init_table){
+  int itpos24 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_AConcreteClasskind].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos24]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 678;
+  fra.me.meth = LOCATE_parser_prod___AConcreteClasskind___init_aconcreteclasskind;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:682 */
+  CALL_parser_prod___AConcreteClasskind___empty_init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  /* ./parser//parser_prod.nit:683 */
+  REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Cast failed", NULL, LOCATE_parser_prod, 683);
+  }
+  ATTR_parser_nodes___AConcreteClasskind____n_kwclass(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./parser//parser_prod.nit:684 */
+  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+    nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 684);
+  }
+  CALL_parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  init_table[itpos24] = 1;
+  return;
+}
+void parser_prod___AConcreteClasskind___replace_child(val_t p0, val_t p1, val_t p2){
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 687;
+  fra.me.meth = LOCATE_parser_prod___AConcreteClasskind___replace_child;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  /* ./parser//parser_prod.nit:689 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AConcreteClasskind____n_kwclass(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_kwclass", LOCATE_parser_prod, 689);
+  }
+  fra.me.REG[3] = ATTR_parser_nodes___AConcreteClasskind____n_kwclass(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+    REGB0 = REGB1;
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:690 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:691 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 691);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:692 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_TKwclass, ID_TKwclass)) /*cast TKwclass*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 692);
+      }
+      /* ./parser//parser_prod.nit:693 */
+      ATTR_parser_nodes___AConcreteClasskind____n_kwclass(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:695 */
+      nit_abort("Aborted", NULL, LOCATE_parser_prod, 695);
+    }
+    /* ./parser//parser_prod.nit:697 */
+    goto label1;
+  }
+  label1: while(0);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser_prod___AConcreteClasskind___visit_all(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 701;
+  fra.me.meth = LOCATE_parser_prod___AConcreteClasskind___visit_all;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:703 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AConcreteClasskind____n_kwclass(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_kwclass", LOCATE_parser_prod, 703);
+  }
+  fra.me.REG[0] = ATTR_parser_nodes___AConcreteClasskind____n_kwclass(fra.me.REG[0]);
+  CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser_prod___AAbstractClasskind___empty_init(val_t p0, int* init_table){
+  int itpos25 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_AAbstractClasskind].i;
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  if (init_table[itpos25]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 707;
+  fra.me.meth = LOCATE_parser_prod___AAbstractClasskind___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos25] = 1;
+  return;
+}
+void parser_prod___AAbstractClasskind___init_aabstractclasskind(val_t p0, val_t p1, val_t p2, int* init_table){
+  int itpos26 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_AAbstractClasskind].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos26]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 709;
+  fra.me.meth = LOCATE_parser_prod___AAbstractClasskind___init_aabstractclasskind;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  /* ./parser//parser_prod.nit:714 */
+  CALL_parser_prod___AAbstractClasskind___empty_init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  /* ./parser//parser_prod.nit:715 */
+  REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Cast failed", NULL, LOCATE_parser_prod, 715);
+  }
+  ATTR_parser_nodes___AAbstractClasskind____n_kwabstract(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./parser//parser_prod.nit:716 */
+  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+    nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 716);
+  }
+  CALL_parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  /* ./parser//parser_prod.nit:717 */
+  REGB0 = TAG_Bool(fra.me.REG[2]!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Cast failed", NULL, LOCATE_parser_prod, 717);
+  }
+  ATTR_parser_nodes___AAbstractClasskind____n_kwclass(fra.me.REG[0]) = fra.me.REG[2];
+  /* ./parser//parser_prod.nit:718 */
+  REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+    nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 718);
+  }
+  CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  init_table[itpos26] = 1;
+  return;
+}
+void parser_prod___AAbstractClasskind___replace_child(val_t p0, val_t p1, val_t p2){
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 721;
+  fra.me.meth = LOCATE_parser_prod___AAbstractClasskind___replace_child;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  /* ./parser//parser_prod.nit:723 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AAbstractClasskind____n_kwabstract(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_kwabstract", LOCATE_parser_prod, 723);
+  }
+  fra.me.REG[3] = ATTR_parser_nodes___AAbstractClasskind____n_kwabstract(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+    REGB0 = REGB1;
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:724 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:725 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 725);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:726 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_TKwabstract, ID_TKwabstract)) /*cast TKwabstract*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 726);
+      }
+      /* ./parser//parser_prod.nit:727 */
+      ATTR_parser_nodes___AAbstractClasskind____n_kwabstract(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:729 */
+      nit_abort("Aborted", NULL, LOCATE_parser_prod, 729);
+    }
+    /* ./parser//parser_prod.nit:731 */
+    goto label1;
+  }
+  /* ./parser//parser_prod.nit:733 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AAbstractClasskind____n_kwclass(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_kwclass", LOCATE_parser_prod, 733);
+  }
+  fra.me.REG[3] = ATTR_parser_nodes___AAbstractClasskind____n_kwclass(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+    REGB0 = REGB1;
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:734 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:735 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 735);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:736 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_TKwclass, ID_TKwclass)) /*cast TKwclass*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 736);
+      }
+      /* ./parser//parser_prod.nit:737 */
+      ATTR_parser_nodes___AAbstractClasskind____n_kwclass(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:739 */
+      nit_abort("Aborted", NULL, LOCATE_parser_prod, 739);
+    }
+    /* ./parser//parser_prod.nit:741 */
+    goto label1;
+  }
+  label1: while(0);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser_prod___AAbstractClasskind___visit_all(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 745;
+  fra.me.meth = LOCATE_parser_prod___AAbstractClasskind___visit_all;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:747 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AAbstractClasskind____n_kwabstract(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_kwabstract", LOCATE_parser_prod, 747);
+  }
+  fra.me.REG[2] = ATTR_parser_nodes___AAbstractClasskind____n_kwabstract(fra.me.REG[0]);
+  CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser_prod.nit:748 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AAbstractClasskind____n_kwclass(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_kwclass", LOCATE_parser_prod, 748);
+  }
+  fra.me.REG[0] = ATTR_parser_nodes___AAbstractClasskind____n_kwclass(fra.me.REG[0]);
+  CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser_prod___AInterfaceClasskind___empty_init(val_t p0, int* init_table){
+  int itpos27 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_AInterfaceClasskind].i;
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  if (init_table[itpos27]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 752;
+  fra.me.meth = LOCATE_parser_prod___AInterfaceClasskind___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos27] = 1;
+  return;
+}
+void parser_prod___AInterfaceClasskind___init_ainterfaceclasskind(val_t p0, val_t p1, int* init_table){
+  int itpos28 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_AInterfaceClasskind].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos28]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 754;
+  fra.me.meth = LOCATE_parser_prod___AInterfaceClasskind___init_ainterfaceclasskind;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:758 */
+  CALL_parser_prod___AInterfaceClasskind___empty_init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  /* ./parser//parser_prod.nit:759 */
+  REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Cast failed", NULL, LOCATE_parser_prod, 759);
+  }
+  ATTR_parser_nodes___AInterfaceClasskind____n_kwinterface(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./parser//parser_prod.nit:760 */
+  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+    nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 760);
+  }
+  CALL_parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  init_table[itpos28] = 1;
+  return;
+}
+void parser_prod___AInterfaceClasskind___replace_child(val_t p0, val_t p1, val_t p2){
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 763;
+  fra.me.meth = LOCATE_parser_prod___AInterfaceClasskind___replace_child;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  /* ./parser//parser_prod.nit:765 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AInterfaceClasskind____n_kwinterface(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_kwinterface", LOCATE_parser_prod, 765);
+  }
+  fra.me.REG[3] = ATTR_parser_nodes___AInterfaceClasskind____n_kwinterface(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+    REGB0 = REGB1;
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:766 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:767 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 767);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:768 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_TKwinterface, ID_TKwinterface)) /*cast TKwinterface*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 768);
+      }
+      /* ./parser//parser_prod.nit:769 */
+      ATTR_parser_nodes___AInterfaceClasskind____n_kwinterface(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:771 */
+      nit_abort("Aborted", NULL, LOCATE_parser_prod, 771);
+    }
+    /* ./parser//parser_prod.nit:773 */
+    goto label1;
+  }
+  label1: while(0);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser_prod___AInterfaceClasskind___visit_all(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 777;
+  fra.me.meth = LOCATE_parser_prod___AInterfaceClasskind___visit_all;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:779 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AInterfaceClasskind____n_kwinterface(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_kwinterface", LOCATE_parser_prod, 779);
+  }
+  fra.me.REG[0] = ATTR_parser_nodes___AInterfaceClasskind____n_kwinterface(fra.me.REG[0]);
+  CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser_prod___AEnumClasskind___empty_init(val_t p0, int* init_table){
+  int itpos29 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_AEnumClasskind].i;
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  if (init_table[itpos29]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 783;
+  fra.me.meth = LOCATE_parser_prod___AEnumClasskind___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos29] = 1;
+  return;
+}
+void parser_prod___AEnumClasskind___init_aenumclasskind(val_t p0, val_t p1, int* init_table){
+  int itpos30 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_AEnumClasskind].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos30]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 785;
+  fra.me.meth = LOCATE_parser_prod___AEnumClasskind___init_aenumclasskind;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:789 */
+  CALL_parser_prod___AEnumClasskind___empty_init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  /* ./parser//parser_prod.nit:790 */
+  REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Cast failed", NULL, LOCATE_parser_prod, 790);
+  }
+  ATTR_parser_nodes___AEnumClasskind____n_kwenum(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./parser//parser_prod.nit:791 */
+  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+    nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 791);
+  }
+  CALL_parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  init_table[itpos30] = 1;
+  return;
+}
+void parser_prod___AEnumClasskind___replace_child(val_t p0, val_t p1, val_t p2){
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 794;
+  fra.me.meth = LOCATE_parser_prod___AEnumClasskind___replace_child;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  /* ./parser//parser_prod.nit:796 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AEnumClasskind____n_kwenum(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_kwenum", LOCATE_parser_prod, 796);
+  }
+  fra.me.REG[3] = ATTR_parser_nodes___AEnumClasskind____n_kwenum(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+    REGB0 = REGB1;
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:797 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:798 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 798);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:799 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_TKwenum, ID_TKwenum)) /*cast TKwenum*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 799);
+      }
+      /* ./parser//parser_prod.nit:800 */
+      ATTR_parser_nodes___AEnumClasskind____n_kwenum(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:802 */
+      nit_abort("Aborted", NULL, LOCATE_parser_prod, 802);
+    }
+    /* ./parser//parser_prod.nit:804 */
+    goto label1;
+  }
+  label1: while(0);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser_prod___AEnumClasskind___visit_all(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 808;
+  fra.me.meth = LOCATE_parser_prod___AEnumClasskind___visit_all;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:810 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AEnumClasskind____n_kwenum(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_kwenum", LOCATE_parser_prod, 810);
+  }
+  fra.me.REG[0] = ATTR_parser_nodes___AEnumClasskind____n_kwenum(fra.me.REG[0]);
+  CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser_prod___AFormaldef___empty_init(val_t p0, int* init_table){
+  int itpos31 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_AFormaldef].i;
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  if (init_table[itpos31]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 814;
+  fra.me.meth = LOCATE_parser_prod___AFormaldef___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos31] = 1;
+  return;
+}
+void parser_prod___AFormaldef___init_aformaldef(val_t p0, val_t p1, val_t p2, int* init_table){
+  int itpos32 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_AFormaldef].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  if (init_table[itpos32]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 816;
+  fra.me.meth = LOCATE_parser_prod___AFormaldef___init_aformaldef;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  /* ./parser//parser_prod.nit:821 */
+  CALL_parser_prod___AFormaldef___empty_init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  /* ./parser//parser_prod.nit:822 */
+  REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Cast failed", NULL, LOCATE_parser_prod, 822);
+  }
+  ATTR_parser_nodes___AFormaldef____n_id(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./parser//parser_prod.nit:823 */
+  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+    nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 823);
+  }
+  CALL_parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  /* ./parser//parser_prod.nit:824 */
+  ATTR_parser_nodes___AFormaldef____n_type(fra.me.REG[0]) = fra.me.REG[2];
+  /* ./parser//parser_prod.nit:825 */
+  REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:826 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+      nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 826);
+    }
+    CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+  }
+  stack_frame_head = fra.me.prev;
+  init_table[itpos32] = 1;
+  return;
+}
+void parser_prod___AFormaldef___replace_child(val_t p0, val_t p1, val_t p2){
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 830;
+  fra.me.meth = LOCATE_parser_prod___AFormaldef___replace_child;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  /* ./parser//parser_prod.nit:832 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AFormaldef____n_id(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_id", LOCATE_parser_prod, 832);
+  }
+  fra.me.REG[3] = ATTR_parser_nodes___AFormaldef____n_id(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+    REGB0 = REGB1;
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:833 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:834 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 834);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:835 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_TClassid, ID_TClassid)) /*cast TClassid*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 835);
+      }
+      /* ./parser//parser_prod.nit:836 */
+      ATTR_parser_nodes___AFormaldef____n_id(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:838 */
+      nit_abort("Aborted", NULL, LOCATE_parser_prod, 838);
+    }
+    /* ./parser//parser_prod.nit:840 */
+    goto label1;
+  }
+  /* ./parser//parser_prod.nit:842 */
+  fra.me.REG[3] = ATTR_parser_nodes___AFormaldef____n_type(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+      REGB0 = REGB1;
+    }
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:843 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:844 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 844);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:845 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_AType, ID_AType)) /*cast AType*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 845);
+      }
+      /* ./parser//parser_prod.nit:846 */
+      ATTR_parser_nodes___AFormaldef____n_type(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:848 */
+      ATTR_parser_nodes___AFormaldef____n_type(fra.me.REG[0]) = NIT_NULL;
+    }
+    /* ./parser//parser_prod.nit:850 */
+    goto label1;
+  }
+  label1: while(0);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser_prod___AFormaldef___visit_all(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 854;
+  fra.me.meth = LOCATE_parser_prod___AFormaldef___visit_all;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:856 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AFormaldef____n_id(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_id", LOCATE_parser_prod, 856);
+  }
+  fra.me.REG[2] = ATTR_parser_nodes___AFormaldef____n_id(fra.me.REG[0]);
+  CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser_prod.nit:857 */
+  fra.me.REG[2] = ATTR_parser_nodes___AFormaldef____n_type(fra.me.REG[0]);
+  REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:858 */
+    fra.me.REG[0] = ATTR_parser_nodes___AFormaldef____n_type(fra.me.REG[0]);
+    REGB0 = TAG_Bool((fra.me.REG[0]!=NIT_NULL) && VAL_ISA(fra.me.REG[0], COLOR_AType, ID_AType)) /*cast AType*/;
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      nit_abort("Cast failed", NULL, LOCATE_parser_prod, 858);
+    }
+    CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  }
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser_prod___ASuperclass___empty_init(val_t p0, int* init_table){
+  int itpos33 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ASuperclass].i;
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  if (init_table[itpos33]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 863;
+  fra.me.meth = LOCATE_parser_prod___ASuperclass___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos33] = 1;
+  return;
+}
+void parser_prod___ASuperclass___init_asuperclass(val_t p0, val_t p1, val_t p2, val_t p3, int* init_table){
+  int itpos34 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ASuperclass].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  if (init_table[itpos34]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 865;
+  fra.me.meth = LOCATE_parser_prod___ASuperclass___init_asuperclass;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  fra.me.REG[3] = p3;
+  /* ./parser//parser_prod.nit:871 */
+  CALL_parser_prod___ASuperclass___empty_init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  /* ./parser//parser_prod.nit:872 */
+  ATTR_parser_nodes___ASuperclass____n_kwspecial(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./parser//parser_prod.nit:873 */
+  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:874 */
+    REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+      nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 874);
+    }
+    CALL_parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  }
+  /* ./parser//parser_prod.nit:876 */
+  ATTR_parser_nodes___ASuperclass____n_kwsuper(fra.me.REG[0]) = fra.me.REG[2];
+  /* ./parser//parser_prod.nit:877 */
+  REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:878 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+      nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 878);
+    }
+    CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+  }
+  /* ./parser//parser_prod.nit:880 */
+  REGB0 = TAG_Bool(fra.me.REG[3]!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Cast failed", NULL, LOCATE_parser_prod, 880);
+  }
+  ATTR_parser_nodes___ASuperclass____n_type(fra.me.REG[0]) = fra.me.REG[3];
+  /* ./parser//parser_prod.nit:881 */
+  REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+    nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 881);
+  }
+  CALL_parser_prod___ANode___parent__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  init_table[itpos34] = 1;
+  return;
+}
+void parser_prod___ASuperclass___replace_child(val_t p0, val_t p1, val_t p2){
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 884;
+  fra.me.meth = LOCATE_parser_prod___ASuperclass___replace_child;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  /* ./parser//parser_prod.nit:886 */
+  fra.me.REG[3] = ATTR_parser_nodes___ASuperclass____n_kwspecial(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+      REGB0 = REGB1;
+    }
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:887 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:888 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 888);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:889 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_TKwspecial, ID_TKwspecial)) /*cast TKwspecial*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 889);
+      }
+      /* ./parser//parser_prod.nit:890 */
+      ATTR_parser_nodes___ASuperclass____n_kwspecial(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:892 */
+      ATTR_parser_nodes___ASuperclass____n_kwspecial(fra.me.REG[0]) = NIT_NULL;
+    }
+    /* ./parser//parser_prod.nit:894 */
+    goto label1;
+  }
+  /* ./parser//parser_prod.nit:896 */
+  fra.me.REG[3] = ATTR_parser_nodes___ASuperclass____n_kwsuper(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+      REGB0 = REGB1;
+    }
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:897 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:898 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 898);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:899 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_TKwsuper, ID_TKwsuper)) /*cast TKwsuper*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 899);
+      }
+      /* ./parser//parser_prod.nit:900 */
+      ATTR_parser_nodes___ASuperclass____n_kwsuper(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:902 */
+      ATTR_parser_nodes___ASuperclass____n_kwsuper(fra.me.REG[0]) = NIT_NULL;
+    }
+    /* ./parser//parser_prod.nit:904 */
+    goto label1;
+  }
+  /* ./parser//parser_prod.nit:906 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ASuperclass____n_type(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_type", LOCATE_parser_prod, 906);
+  }
+  fra.me.REG[3] = ATTR_parser_nodes___ASuperclass____n_type(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+    REGB0 = REGB1;
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:907 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:908 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 908);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:909 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_AType, ID_AType)) /*cast AType*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 909);
+      }
+      /* ./parser//parser_prod.nit:910 */
+      ATTR_parser_nodes___ASuperclass____n_type(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:912 */
+      nit_abort("Aborted", NULL, LOCATE_parser_prod, 912);
+    }
+    /* ./parser//parser_prod.nit:914 */
+    goto label1;
+  }
+  label1: while(0);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser_prod___ASuperclass___visit_all(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 918;
+  fra.me.meth = LOCATE_parser_prod___ASuperclass___visit_all;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:920 */
+  fra.me.REG[2] = ATTR_parser_nodes___ASuperclass____n_kwspecial(fra.me.REG[0]);
+  REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:921 */
+    fra.me.REG[2] = ATTR_parser_nodes___ASuperclass____n_kwspecial(fra.me.REG[0]);
+    REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_TKwspecial, ID_TKwspecial)) /*cast TKwspecial*/;
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      nit_abort("Cast failed", NULL, LOCATE_parser_prod, 921);
+    }
+    CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  }
+  /* ./parser//parser_prod.nit:923 */
+  fra.me.REG[2] = ATTR_parser_nodes___ASuperclass____n_kwsuper(fra.me.REG[0]);
+  REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:924 */
+    fra.me.REG[2] = ATTR_parser_nodes___ASuperclass____n_kwsuper(fra.me.REG[0]);
+    REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_TKwsuper, ID_TKwsuper)) /*cast TKwsuper*/;
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      nit_abort("Cast failed", NULL, LOCATE_parser_prod, 924);
+    }
+    CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  }
+  /* ./parser//parser_prod.nit:926 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ASuperclass____n_type(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_type", LOCATE_parser_prod, 926);
+  }
+  fra.me.REG[0] = ATTR_parser_nodes___ASuperclass____n_type(fra.me.REG[0]);
+  CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser_prod___AAttrPropdef___empty_init(val_t p0, int* init_table){
+  int itpos35 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_AAttrPropdef].i;
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  if (init_table[itpos35]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 930;
+  fra.me.meth = LOCATE_parser_prod___AAttrPropdef___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos35] = 1;
+  return;
+}
+void parser_prod___AAttrPropdef___init_aattrpropdef(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4, val_t p5, val_t p6, val_t p7, val_t p8, val_t p9, val_t p10, int* init_table){
+  int itpos36 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_AAttrPropdef].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[10];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  if (init_table[itpos36]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 932;
+  fra.me.meth = LOCATE_parser_prod___AAttrPropdef___init_aattrpropdef;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 11;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[10] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  fra.me.REG[3] = p3;
+  fra.me.REG[4] = p4;
+  fra.me.REG[5] = p5;
+  fra.me.REG[6] = p6;
+  fra.me.REG[7] = p7;
+  fra.me.REG[8] = p8;
+  fra.me.REG[9] = p9;
+  fra.me.REG[10] = p10;
+  /* ./parser//parser_prod.nit:945 */
+  CALL_parser_prod___AAttrPropdef___empty_init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  /* ./parser//parser_prod.nit:946 */
+  ATTR_parser_nodes___APropdef____n_doc(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./parser//parser_prod.nit:947 */
+  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:948 */
+    REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+      nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 948);
+    }
+    CALL_parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  }
+  /* ./parser//parser_prod.nit:950 */
+  ATTR_parser_nodes___AAttrPropdef____n_readable(fra.me.REG[0]) = fra.me.REG[2];
+  /* ./parser//parser_prod.nit:951 */
+  REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:952 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+      nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 952);
+    }
+    CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+  }
+  /* ./parser//parser_prod.nit:954 */
+  ATTR_parser_nodes___AAttrPropdef____n_writable(fra.me.REG[0]) = fra.me.REG[3];
+  /* ./parser//parser_prod.nit:955 */
+  REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:956 */
+    REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+      nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 956);
+    }
+    CALL_parser_prod___ANode___parent__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[0]);
+  }
+  /* ./parser//parser_prod.nit:958 */
+  ATTR_parser_nodes___AAttrPropdef____n_kwredef(fra.me.REG[0]) = fra.me.REG[4];
+  /* ./parser//parser_prod.nit:959 */
+  REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:960 */
+    REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+      nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 960);
+    }
+    CALL_parser_prod___ANode___parent__eq(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[0]);
+  }
+  /* ./parser//parser_prod.nit:962 */
+  REGB0 = TAG_Bool(fra.me.REG[5]!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Cast failed", NULL, LOCATE_parser_prod, 962);
+  }
+  ATTR_parser_nodes___AAttrPropdef____n_visibility(fra.me.REG[0]) = fra.me.REG[5];
+  /* ./parser//parser_prod.nit:963 */
+  REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+    nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 963);
+  }
+  CALL_parser_prod___ANode___parent__eq(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[0]);
+  /* ./parser//parser_prod.nit:964 */
+  REGB0 = TAG_Bool(fra.me.REG[6]!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Cast failed", NULL, LOCATE_parser_prod, 964);
+  }
+  ATTR_parser_nodes___AAttrPropdef____n_kwvar(fra.me.REG[0]) = fra.me.REG[6];
+  /* ./parser//parser_prod.nit:965 */
+  REGB0 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+    nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 965);
+  }
+  CALL_parser_prod___ANode___parent__eq(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[0]);
+  /* ./parser//parser_prod.nit:966 */
+  ATTR_parser_nodes___AAttrPropdef____n_id(fra.me.REG[0]) = fra.me.REG[7];
+  /* ./parser//parser_prod.nit:967 */
+  REGB0 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[7])(fra.me.REG[7], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:968 */
+    REGB0 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+      nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 968);
+    }
+    CALL_parser_prod___ANode___parent__eq(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[0]);
+  }
+  /* ./parser//parser_prod.nit:970 */
+  ATTR_parser_nodes___AAttrPropdef____n_id2(fra.me.REG[0]) = fra.me.REG[8];
+  /* ./parser//parser_prod.nit:971 */
+  REGB0 = TAG_Bool(fra.me.REG[8]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[8]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[8])(fra.me.REG[8], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:972 */
+    REGB0 = TAG_Bool(fra.me.REG[8]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+      nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 972);
+    }
+    CALL_parser_prod___ANode___parent__eq(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[0]);
+  }
+  /* ./parser//parser_prod.nit:974 */
+  ATTR_parser_nodes___AAttrPropdef____n_type(fra.me.REG[0]) = fra.me.REG[9];
+  /* ./parser//parser_prod.nit:975 */
+  REGB0 = TAG_Bool(fra.me.REG[9]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[9]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[9])(fra.me.REG[9], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:976 */
+    REGB0 = TAG_Bool(fra.me.REG[9]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+      nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 976);
+    }
+    CALL_parser_prod___ANode___parent__eq(fra.me.REG[9])(fra.me.REG[9], fra.me.REG[0]);
+  }
+  /* ./parser//parser_prod.nit:978 */
+  ATTR_parser_nodes___AAttrPropdef____n_expr(fra.me.REG[0]) = fra.me.REG[10];
+  /* ./parser//parser_prod.nit:979 */
+  REGB0 = TAG_Bool(fra.me.REG[10]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[10]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[10])(fra.me.REG[10], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:980 */
+    REGB0 = TAG_Bool(fra.me.REG[10]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+      nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 980);
+    }
+    CALL_parser_prod___ANode___parent__eq(fra.me.REG[10])(fra.me.REG[10], fra.me.REG[0]);
+  }
+  stack_frame_head = fra.me.prev;
+  init_table[itpos36] = 1;
+  return;
+}
+void parser_prod___AAttrPropdef___replace_child(val_t p0, val_t p1, val_t p2){
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 984;
+  fra.me.meth = LOCATE_parser_prod___AAttrPropdef___replace_child;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  /* ./parser//parser_prod.nit:986 */
+  fra.me.REG[3] = ATTR_parser_nodes___APropdef____n_doc(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+      REGB0 = REGB1;
+    }
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:987 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:988 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 988);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:989 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_ADoc, ID_ADoc)) /*cast ADoc*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 989);
+      }
+      /* ./parser//parser_prod.nit:990 */
+      ATTR_parser_nodes___APropdef____n_doc(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:992 */
+      ATTR_parser_nodes___APropdef____n_doc(fra.me.REG[0]) = NIT_NULL;
+    }
+    /* ./parser//parser_prod.nit:994 */
+    goto label1;
+  }
+  /* ./parser//parser_prod.nit:996 */
+  fra.me.REG[3] = ATTR_parser_nodes___AAttrPropdef____n_readable(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+      REGB0 = REGB1;
+    }
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:997 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:998 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 998);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:999 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_AAble, ID_AAble)) /*cast AAble*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 999);
+      }
+      /* ./parser//parser_prod.nit:1000 */
+      ATTR_parser_nodes___AAttrPropdef____n_readable(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:1002 */
+      ATTR_parser_nodes___AAttrPropdef____n_readable(fra.me.REG[0]) = NIT_NULL;
+    }
+    /* ./parser//parser_prod.nit:1004 */
+    goto label1;
+  }
+  /* ./parser//parser_prod.nit:1006 */
+  fra.me.REG[3] = ATTR_parser_nodes___AAttrPropdef____n_writable(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+      REGB0 = REGB1;
+    }
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:1007 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:1008 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 1008);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:1009 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_AAble, ID_AAble)) /*cast AAble*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 1009);
+      }
+      /* ./parser//parser_prod.nit:1010 */
+      ATTR_parser_nodes___AAttrPropdef____n_writable(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:1012 */
+      ATTR_parser_nodes___AAttrPropdef____n_writable(fra.me.REG[0]) = NIT_NULL;
+    }
+    /* ./parser//parser_prod.nit:1014 */
+    goto label1;
+  }
+  /* ./parser//parser_prod.nit:1016 */
+  fra.me.REG[3] = ATTR_parser_nodes___AAttrPropdef____n_kwredef(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+      REGB0 = REGB1;
+    }
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:1017 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:1018 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 1018);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:1019 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 1019);
+      }
+      /* ./parser//parser_prod.nit:1020 */
+      ATTR_parser_nodes___AAttrPropdef____n_kwredef(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:1022 */
+      ATTR_parser_nodes___AAttrPropdef____n_kwredef(fra.me.REG[0]) = NIT_NULL;
+    }
+    /* ./parser//parser_prod.nit:1024 */
+    goto label1;
+  }
+  /* ./parser//parser_prod.nit:1026 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AAttrPropdef____n_visibility(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_visibility", LOCATE_parser_prod, 1026);
+  }
+  fra.me.REG[3] = ATTR_parser_nodes___AAttrPropdef____n_visibility(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+    REGB0 = REGB1;
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:1027 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:1028 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 1028);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:1029 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_AVisibility, ID_AVisibility)) /*cast AVisibility*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 1029);
+      }
+      /* ./parser//parser_prod.nit:1030 */
+      ATTR_parser_nodes___AAttrPropdef____n_visibility(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:1032 */
+      nit_abort("Aborted", NULL, LOCATE_parser_prod, 1032);
+    }
+    /* ./parser//parser_prod.nit:1034 */
+    goto label1;
+  }
+  /* ./parser//parser_prod.nit:1036 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AAttrPropdef____n_kwvar(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_kwvar", LOCATE_parser_prod, 1036);
+  }
+  fra.me.REG[3] = ATTR_parser_nodes___AAttrPropdef____n_kwvar(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+    REGB0 = REGB1;
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:1037 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:1038 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 1038);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:1039 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_TKwvar, ID_TKwvar)) /*cast TKwvar*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 1039);
+      }
+      /* ./parser//parser_prod.nit:1040 */
+      ATTR_parser_nodes___AAttrPropdef____n_kwvar(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:1042 */
+      nit_abort("Aborted", NULL, LOCATE_parser_prod, 1042);
+    }
+    /* ./parser//parser_prod.nit:1044 */
+    goto label1;
+  }
+  /* ./parser//parser_prod.nit:1046 */
+  fra.me.REG[3] = ATTR_parser_nodes___AAttrPropdef____n_id(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+      REGB0 = REGB1;
+    }
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:1047 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:1048 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 1048);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:1049 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_TAttrid, ID_TAttrid)) /*cast TAttrid*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 1049);
+      }
+      /* ./parser//parser_prod.nit:1050 */
+      ATTR_parser_nodes___AAttrPropdef____n_id(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:1052 */
+      ATTR_parser_nodes___AAttrPropdef____n_id(fra.me.REG[0]) = NIT_NULL;
+    }
+    /* ./parser//parser_prod.nit:1054 */
+    goto label1;
+  }
+  /* ./parser//parser_prod.nit:1056 */
+  fra.me.REG[3] = ATTR_parser_nodes___AAttrPropdef____n_id2(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+      REGB0 = REGB1;
+    }
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:1057 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:1058 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 1058);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:1059 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_TId, ID_TId)) /*cast TId*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 1059);
+      }
+      /* ./parser//parser_prod.nit:1060 */
+      ATTR_parser_nodes___AAttrPropdef____n_id2(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:1062 */
+      ATTR_parser_nodes___AAttrPropdef____n_id2(fra.me.REG[0]) = NIT_NULL;
+    }
+    /* ./parser//parser_prod.nit:1064 */
+    goto label1;
+  }
+  /* ./parser//parser_prod.nit:1066 */
+  fra.me.REG[3] = ATTR_parser_nodes___AAttrPropdef____n_type(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+      REGB0 = REGB1;
+    }
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:1067 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:1068 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 1068);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:1069 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_AType, ID_AType)) /*cast AType*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 1069);
+      }
+      /* ./parser//parser_prod.nit:1070 */
+      ATTR_parser_nodes___AAttrPropdef____n_type(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:1072 */
+      ATTR_parser_nodes___AAttrPropdef____n_type(fra.me.REG[0]) = NIT_NULL;
+    }
+    /* ./parser//parser_prod.nit:1074 */
+    goto label1;
+  }
+  /* ./parser//parser_prod.nit:1076 */
+  fra.me.REG[3] = ATTR_parser_nodes___AAttrPropdef____n_expr(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+      REGB0 = REGB1;
+    }
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:1077 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:1078 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 1078);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:1079 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_AExpr, ID_AExpr)) /*cast AExpr*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 1079);
+      }
+      /* ./parser//parser_prod.nit:1080 */
+      ATTR_parser_nodes___AAttrPropdef____n_expr(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:1082 */
+      ATTR_parser_nodes___AAttrPropdef____n_expr(fra.me.REG[0]) = NIT_NULL;
+    }
+    /* ./parser//parser_prod.nit:1084 */
+    goto label1;
+  }
+  label1: while(0);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser_prod___AAttrPropdef___visit_all(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 1088;
+  fra.me.meth = LOCATE_parser_prod___AAttrPropdef___visit_all;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:1090 */
+  fra.me.REG[2] = ATTR_parser_nodes___APropdef____n_doc(fra.me.REG[0]);
+  REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:1091 */
+    fra.me.REG[2] = ATTR_parser_nodes___APropdef____n_doc(fra.me.REG[0]);
+    REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_ADoc, ID_ADoc)) /*cast ADoc*/;
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      nit_abort("Cast failed", NULL, LOCATE_parser_prod, 1091);
+    }
+    CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  }
+  /* ./parser//parser_prod.nit:1093 */
+  fra.me.REG[2] = ATTR_parser_nodes___AAttrPropdef____n_readable(fra.me.REG[0]);
+  REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:1094 */
+    fra.me.REG[2] = ATTR_parser_nodes___AAttrPropdef____n_readable(fra.me.REG[0]);
+    REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_AAble, ID_AAble)) /*cast AAble*/;
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      nit_abort("Cast failed", NULL, LOCATE_parser_prod, 1094);
+    }
+    CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  }
+  /* ./parser//parser_prod.nit:1096 */
+  fra.me.REG[2] = ATTR_parser_nodes___AAttrPropdef____n_writable(fra.me.REG[0]);
+  REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:1097 */
+    fra.me.REG[2] = ATTR_parser_nodes___AAttrPropdef____n_writable(fra.me.REG[0]);
+    REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_AAble, ID_AAble)) /*cast AAble*/;
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      nit_abort("Cast failed", NULL, LOCATE_parser_prod, 1097);
+    }
+    CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  }
+  /* ./parser//parser_prod.nit:1099 */
+  fra.me.REG[2] = ATTR_parser_nodes___AAttrPropdef____n_kwredef(fra.me.REG[0]);
+  REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:1100 */
+    fra.me.REG[2] = ATTR_parser_nodes___AAttrPropdef____n_kwredef(fra.me.REG[0]);
+    REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      nit_abort("Cast failed", NULL, LOCATE_parser_prod, 1100);
+    }
+    CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  }
+  /* ./parser//parser_prod.nit:1102 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AAttrPropdef____n_visibility(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_visibility", LOCATE_parser_prod, 1102);
+  }
+  fra.me.REG[2] = ATTR_parser_nodes___AAttrPropdef____n_visibility(fra.me.REG[0]);
+  CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser_prod.nit:1103 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AAttrPropdef____n_kwvar(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_kwvar", LOCATE_parser_prod, 1103);
+  }
+  fra.me.REG[2] = ATTR_parser_nodes___AAttrPropdef____n_kwvar(fra.me.REG[0]);
+  CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser_prod.nit:1104 */
+  fra.me.REG[2] = ATTR_parser_nodes___AAttrPropdef____n_id(fra.me.REG[0]);
+  REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:1105 */
+    fra.me.REG[2] = ATTR_parser_nodes___AAttrPropdef____n_id(fra.me.REG[0]);
+    REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_TAttrid, ID_TAttrid)) /*cast TAttrid*/;
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      nit_abort("Cast failed", NULL, LOCATE_parser_prod, 1105);
+    }
+    CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  }
+  /* ./parser//parser_prod.nit:1107 */
+  fra.me.REG[2] = ATTR_parser_nodes___AAttrPropdef____n_id2(fra.me.REG[0]);
+  REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:1108 */
+    fra.me.REG[2] = ATTR_parser_nodes___AAttrPropdef____n_id2(fra.me.REG[0]);
+    REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_TId, ID_TId)) /*cast TId*/;
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      nit_abort("Cast failed", NULL, LOCATE_parser_prod, 1108);
+    }
+    CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  }
+  /* ./parser//parser_prod.nit:1110 */
+  fra.me.REG[2] = ATTR_parser_nodes___AAttrPropdef____n_type(fra.me.REG[0]);
+  REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:1111 */
+    fra.me.REG[2] = ATTR_parser_nodes___AAttrPropdef____n_type(fra.me.REG[0]);
+    REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_AType, ID_AType)) /*cast AType*/;
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      nit_abort("Cast failed", NULL, LOCATE_parser_prod, 1111);
+    }
+    CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  }
+  /* ./parser//parser_prod.nit:1113 */
+  fra.me.REG[2] = ATTR_parser_nodes___AAttrPropdef____n_expr(fra.me.REG[0]);
+  REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:1114 */
+    fra.me.REG[0] = ATTR_parser_nodes___AAttrPropdef____n_expr(fra.me.REG[0]);
+    REGB0 = TAG_Bool((fra.me.REG[0]!=NIT_NULL) && VAL_ISA(fra.me.REG[0], COLOR_AExpr, ID_AExpr)) /*cast AExpr*/;
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      nit_abort("Cast failed", NULL, LOCATE_parser_prod, 1114);
+    }
+    CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  }
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser_prod___AMethPropdef___empty_init(val_t p0, int* init_table){
+  int itpos37 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_AMethPropdef].i;
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  if (init_table[itpos37]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 1119;
+  fra.me.meth = LOCATE_parser_prod___AMethPropdef___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos37] = 1;
+  return;
+}
+void parser_prod___AMethPropdef___init_amethpropdef(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4, val_t p5, int* init_table){
+  int itpos38 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_AMethPropdef].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[5];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  if (init_table[itpos38]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 1121;
+  fra.me.meth = LOCATE_parser_prod___AMethPropdef___init_amethpropdef;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 6;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  fra.me.REG[3] = p3;
+  fra.me.REG[4] = p4;
+  fra.me.REG[5] = p5;
+  /* ./parser//parser_prod.nit:1129 */
+  CALL_parser_prod___AMethPropdef___empty_init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  /* ./parser//parser_prod.nit:1130 */
+  ATTR_parser_nodes___APropdef____n_doc(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./parser//parser_prod.nit:1131 */
+  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:1132 */
+    REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+      nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 1132);
+    }
+    CALL_parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  }
+  /* ./parser//parser_prod.nit:1134 */
+  ATTR_parser_nodes___AMethPropdef____n_kwredef(fra.me.REG[0]) = fra.me.REG[2];
+  /* ./parser//parser_prod.nit:1135 */
+  REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:1136 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+      nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 1136);
+    }
+    CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+  }
+  /* ./parser//parser_prod.nit:1138 */
+  REGB0 = TAG_Bool(fra.me.REG[3]!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Cast failed", NULL, LOCATE_parser_prod, 1138);
+  }
+  ATTR_parser_nodes___AMethPropdef____n_visibility(fra.me.REG[0]) = fra.me.REG[3];
+  /* ./parser//parser_prod.nit:1139 */
+  REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+    nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 1139);
+  }
+  CALL_parser_prod___ANode___parent__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[0]);
+  /* ./parser//parser_prod.nit:1140 */
+  REGB0 = TAG_Bool(fra.me.REG[4]!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Cast failed", NULL, LOCATE_parser_prod, 1140);
+  }
+  ATTR_parser_nodes___AMethPropdef____n_methid(fra.me.REG[0]) = fra.me.REG[4];
+  /* ./parser//parser_prod.nit:1141 */
+  REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+    nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 1141);
+  }
+  CALL_parser_prod___ANode___parent__eq(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[0]);
+  /* ./parser//parser_prod.nit:1142 */
+  REGB0 = TAG_Bool(fra.me.REG[5]!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Cast failed", NULL, LOCATE_parser_prod, 1142);
+  }
+  ATTR_parser_nodes___AMethPropdef____n_signature(fra.me.REG[0]) = fra.me.REG[5];
+  /* ./parser//parser_prod.nit:1143 */
+  REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+    nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 1143);
+  }
+  CALL_parser_prod___ANode___parent__eq(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  init_table[itpos38] = 1;
+  return;
+}
+void parser_prod___AMethPropdef___replace_child(val_t p0, val_t p1, val_t p2){
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 1146;
+  fra.me.meth = LOCATE_parser_prod___AMethPropdef___replace_child;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  /* ./parser//parser_prod.nit:1148 */
+  fra.me.REG[3] = ATTR_parser_nodes___APropdef____n_doc(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+      REGB0 = REGB1;
+    }
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:1149 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:1150 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 1150);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:1151 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_ADoc, ID_ADoc)) /*cast ADoc*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 1151);
+      }
+      /* ./parser//parser_prod.nit:1152 */
+      ATTR_parser_nodes___APropdef____n_doc(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:1154 */
+      ATTR_parser_nodes___APropdef____n_doc(fra.me.REG[0]) = NIT_NULL;
+    }
+    /* ./parser//parser_prod.nit:1156 */
+    goto label1;
+  }
+  /* ./parser//parser_prod.nit:1158 */
+  fra.me.REG[3] = ATTR_parser_nodes___AMethPropdef____n_kwredef(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+      REGB0 = REGB1;
+    }
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:1159 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:1160 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 1160);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:1161 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 1161);
+      }
+      /* ./parser//parser_prod.nit:1162 */
+      ATTR_parser_nodes___AMethPropdef____n_kwredef(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:1164 */
+      ATTR_parser_nodes___AMethPropdef____n_kwredef(fra.me.REG[0]) = NIT_NULL;
+    }
+    /* ./parser//parser_prod.nit:1166 */
+    goto label1;
+  }
+  /* ./parser//parser_prod.nit:1168 */
+  fra.me.REG[3] = ATTR_parser_nodes___AMethPropdef____n_visibility(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+      REGB0 = REGB1;
+    }
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:1169 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:1170 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 1170);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:1171 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_AVisibility, ID_AVisibility)) /*cast AVisibility*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 1171);
+      }
+      /* ./parser//parser_prod.nit:1172 */
+      ATTR_parser_nodes___AMethPropdef____n_visibility(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:1174 */
+      nit_abort("Aborted", NULL, LOCATE_parser_prod, 1174);
+    }
+    /* ./parser//parser_prod.nit:1176 */
+    goto label1;
+  }
+  /* ./parser//parser_prod.nit:1178 */
+  fra.me.REG[3] = ATTR_parser_nodes___AMethPropdef____n_methid(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+      REGB0 = REGB1;
+    }
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:1179 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:1180 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 1180);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:1181 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_AMethid, ID_AMethid)) /*cast AMethid*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 1181);
+      }
+      /* ./parser//parser_prod.nit:1182 */
+      ATTR_parser_nodes___AMethPropdef____n_methid(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:1184 */
+      nit_abort("Aborted", NULL, LOCATE_parser_prod, 1184);
+    }
+    /* ./parser//parser_prod.nit:1186 */
+    goto label1;
+  }
+  /* ./parser//parser_prod.nit:1188 */
+  fra.me.REG[3] = ATTR_parser_nodes___AMethPropdef____n_signature(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+      REGB0 = REGB1;
+    }
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:1189 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:1190 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 1190);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:1191 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_ASignature, ID_ASignature)) /*cast ASignature*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 1191);
+      }
+      /* ./parser//parser_prod.nit:1192 */
+      ATTR_parser_nodes___AMethPropdef____n_signature(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:1194 */
+      nit_abort("Aborted", NULL, LOCATE_parser_prod, 1194);
+    }
+    /* ./parser//parser_prod.nit:1196 */
+    goto label1;
+  }
+  label1: while(0);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser_prod___AMethPropdef___visit_all(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 1200;
+  fra.me.meth = LOCATE_parser_prod___AMethPropdef___visit_all;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:1202 */
+  fra.me.REG[2] = ATTR_parser_nodes___APropdef____n_doc(fra.me.REG[0]);
+  REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:1203 */
+    fra.me.REG[2] = ATTR_parser_nodes___APropdef____n_doc(fra.me.REG[0]);
+    REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_ADoc, ID_ADoc)) /*cast ADoc*/;
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      nit_abort("Cast failed", NULL, LOCATE_parser_prod, 1203);
+    }
+    CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  }
+  /* ./parser//parser_prod.nit:1205 */
+  fra.me.REG[2] = ATTR_parser_nodes___AMethPropdef____n_kwredef(fra.me.REG[0]);
+  REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:1206 */
+    fra.me.REG[2] = ATTR_parser_nodes___AMethPropdef____n_kwredef(fra.me.REG[0]);
+    REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      nit_abort("Cast failed", NULL, LOCATE_parser_prod, 1206);
+    }
+    CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  }
+  /* ./parser//parser_prod.nit:1208 */
+  fra.me.REG[2] = ATTR_parser_nodes___AMethPropdef____n_visibility(fra.me.REG[0]);
+  CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser_prod.nit:1209 */
+  fra.me.REG[2] = ATTR_parser_nodes___AMethPropdef____n_methid(fra.me.REG[0]);
+  CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser_prod.nit:1210 */
+  fra.me.REG[0] = ATTR_parser_nodes___AMethPropdef____n_signature(fra.me.REG[0]);
+  CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser_prod___ADeferredMethPropdef___empty_init(val_t p0, int* init_table){
+  int itpos39 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ADeferredMethPropdef].i;
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  if (init_table[itpos39]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 1214;
+  fra.me.meth = LOCATE_parser_prod___ADeferredMethPropdef___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos39] = 1;
+  return;
+}
+void parser_prod___ADeferredMethPropdef___init_adeferredmethpropdef(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4, val_t p5, val_t p6, int* init_table){
+  int itpos40 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ADeferredMethPropdef].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[6];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  if (init_table[itpos40]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 1216;
+  fra.me.meth = LOCATE_parser_prod___ADeferredMethPropdef___init_adeferredmethpropdef;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 7;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  fra.me.REG[3] = p3;
+  fra.me.REG[4] = p4;
+  fra.me.REG[5] = p5;
+  fra.me.REG[6] = p6;
+  /* ./parser//parser_prod.nit:1225 */
+  CALL_parser_prod___ADeferredMethPropdef___empty_init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  /* ./parser//parser_prod.nit:1226 */
+  ATTR_parser_nodes___APropdef____n_doc(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./parser//parser_prod.nit:1227 */
+  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:1228 */
+    REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+      nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 1228);
+    }
+    CALL_parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  }
+  /* ./parser//parser_prod.nit:1230 */
+  ATTR_parser_nodes___AMethPropdef____n_kwredef(fra.me.REG[0]) = fra.me.REG[2];
+  /* ./parser//parser_prod.nit:1231 */
+  REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:1232 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+      nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 1232);
+    }
+    CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+  }
+  /* ./parser//parser_prod.nit:1234 */
+  REGB0 = TAG_Bool(fra.me.REG[3]!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Cast failed", NULL, LOCATE_parser_prod, 1234);
+  }
+  ATTR_parser_nodes___AMethPropdef____n_visibility(fra.me.REG[0]) = fra.me.REG[3];
+  /* ./parser//parser_prod.nit:1235 */
+  REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+    nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 1235);
+  }
+  CALL_parser_prod___ANode___parent__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[0]);
+  /* ./parser//parser_prod.nit:1236 */
+  REGB0 = TAG_Bool(fra.me.REG[4]!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Cast failed", NULL, LOCATE_parser_prod, 1236);
+  }
+  ATTR_parser_nodes___ADeferredMethPropdef____n_kwmeth(fra.me.REG[0]) = fra.me.REG[4];
+  /* ./parser//parser_prod.nit:1237 */
+  REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+    nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 1237);
+  }
+  CALL_parser_prod___ANode___parent__eq(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[0]);
+  /* ./parser//parser_prod.nit:1238 */
+  REGB0 = TAG_Bool(fra.me.REG[5]!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Cast failed", NULL, LOCATE_parser_prod, 1238);
+  }
+  ATTR_parser_nodes___AMethPropdef____n_methid(fra.me.REG[0]) = fra.me.REG[5];
+  /* ./parser//parser_prod.nit:1239 */
+  REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+    nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 1239);
+  }
+  CALL_parser_prod___ANode___parent__eq(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[0]);
+  /* ./parser//parser_prod.nit:1240 */
+  REGB0 = TAG_Bool(fra.me.REG[6]!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Cast failed", NULL, LOCATE_parser_prod, 1240);
+  }
+  ATTR_parser_nodes___AMethPropdef____n_signature(fra.me.REG[0]) = fra.me.REG[6];
+  /* ./parser//parser_prod.nit:1241 */
+  REGB0 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+    nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 1241);
+  }
+  CALL_parser_prod___ANode___parent__eq(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  init_table[itpos40] = 1;
+  return;
+}
+void parser_prod___ADeferredMethPropdef___replace_child(val_t p0, val_t p1, val_t p2){
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 1244;
+  fra.me.meth = LOCATE_parser_prod___ADeferredMethPropdef___replace_child;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  /* ./parser//parser_prod.nit:1246 */
+  fra.me.REG[3] = ATTR_parser_nodes___APropdef____n_doc(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+      REGB0 = REGB1;
+    }
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:1247 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:1248 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 1248);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:1249 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_ADoc, ID_ADoc)) /*cast ADoc*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 1249);
+      }
+      /* ./parser//parser_prod.nit:1250 */
+      ATTR_parser_nodes___APropdef____n_doc(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:1252 */
+      ATTR_parser_nodes___APropdef____n_doc(fra.me.REG[0]) = NIT_NULL;
+    }
+    /* ./parser//parser_prod.nit:1254 */
+    goto label1;
+  }
+  /* ./parser//parser_prod.nit:1256 */
+  fra.me.REG[3] = ATTR_parser_nodes___AMethPropdef____n_kwredef(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+      REGB0 = REGB1;
+    }
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:1257 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:1258 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 1258);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:1259 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 1259);
+      }
+      /* ./parser//parser_prod.nit:1260 */
+      ATTR_parser_nodes___AMethPropdef____n_kwredef(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:1262 */
+      ATTR_parser_nodes___AMethPropdef____n_kwredef(fra.me.REG[0]) = NIT_NULL;
+    }
+    /* ./parser//parser_prod.nit:1264 */
+    goto label1;
+  }
+  /* ./parser//parser_prod.nit:1266 */
+  fra.me.REG[3] = ATTR_parser_nodes___AMethPropdef____n_visibility(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+      REGB0 = REGB1;
+    }
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:1267 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:1268 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 1268);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:1269 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_AVisibility, ID_AVisibility)) /*cast AVisibility*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 1269);
+      }
+      /* ./parser//parser_prod.nit:1270 */
+      ATTR_parser_nodes___AMethPropdef____n_visibility(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:1272 */
+      nit_abort("Aborted", NULL, LOCATE_parser_prod, 1272);
+    }
+    /* ./parser//parser_prod.nit:1274 */
+    goto label1;
+  }
+  /* ./parser//parser_prod.nit:1276 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ADeferredMethPropdef____n_kwmeth(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_kwmeth", LOCATE_parser_prod, 1276);
+  }
+  fra.me.REG[3] = ATTR_parser_nodes___ADeferredMethPropdef____n_kwmeth(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+    REGB0 = REGB1;
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:1277 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:1278 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 1278);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:1279 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_TKwmeth, ID_TKwmeth)) /*cast TKwmeth*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 1279);
+      }
+      /* ./parser//parser_prod.nit:1280 */
+      ATTR_parser_nodes___ADeferredMethPropdef____n_kwmeth(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:1282 */
+      nit_abort("Aborted", NULL, LOCATE_parser_prod, 1282);
+    }
+    /* ./parser//parser_prod.nit:1284 */
+    goto label1;
+  }
+  /* ./parser//parser_prod.nit:1286 */
+  fra.me.REG[3] = ATTR_parser_nodes___AMethPropdef____n_methid(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+      REGB0 = REGB1;
+    }
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:1287 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:1288 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 1288);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:1289 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_AMethid, ID_AMethid)) /*cast AMethid*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 1289);
+      }
+      /* ./parser//parser_prod.nit:1290 */
+      ATTR_parser_nodes___AMethPropdef____n_methid(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:1292 */
+      nit_abort("Aborted", NULL, LOCATE_parser_prod, 1292);
+    }
+    /* ./parser//parser_prod.nit:1294 */
+    goto label1;
+  }
+  /* ./parser//parser_prod.nit:1296 */
+  fra.me.REG[3] = ATTR_parser_nodes___AMethPropdef____n_signature(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+      REGB0 = REGB1;
+    }
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:1297 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:1298 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 1298);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:1299 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_ASignature, ID_ASignature)) /*cast ASignature*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 1299);
+      }
+      /* ./parser//parser_prod.nit:1300 */
+      ATTR_parser_nodes___AMethPropdef____n_signature(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:1302 */
+      nit_abort("Aborted", NULL, LOCATE_parser_prod, 1302);
+    }
+    /* ./parser//parser_prod.nit:1304 */
+    goto label1;
+  }
+  label1: while(0);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser_prod___ADeferredMethPropdef___visit_all(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 1308;
+  fra.me.meth = LOCATE_parser_prod___ADeferredMethPropdef___visit_all;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:1310 */
+  fra.me.REG[2] = ATTR_parser_nodes___APropdef____n_doc(fra.me.REG[0]);
+  REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:1311 */
+    fra.me.REG[2] = ATTR_parser_nodes___APropdef____n_doc(fra.me.REG[0]);
+    REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_ADoc, ID_ADoc)) /*cast ADoc*/;
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      nit_abort("Cast failed", NULL, LOCATE_parser_prod, 1311);
+    }
+    CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  }
+  /* ./parser//parser_prod.nit:1313 */
+  fra.me.REG[2] = ATTR_parser_nodes___AMethPropdef____n_kwredef(fra.me.REG[0]);
+  REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:1314 */
+    fra.me.REG[2] = ATTR_parser_nodes___AMethPropdef____n_kwredef(fra.me.REG[0]);
+    REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      nit_abort("Cast failed", NULL, LOCATE_parser_prod, 1314);
+    }
+    CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  }
+  /* ./parser//parser_prod.nit:1316 */
+  fra.me.REG[2] = ATTR_parser_nodes___AMethPropdef____n_visibility(fra.me.REG[0]);
+  CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser_prod.nit:1317 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ADeferredMethPropdef____n_kwmeth(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_kwmeth", LOCATE_parser_prod, 1317);
+  }
+  fra.me.REG[2] = ATTR_parser_nodes___ADeferredMethPropdef____n_kwmeth(fra.me.REG[0]);
+  CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser_prod.nit:1318 */
+  fra.me.REG[2] = ATTR_parser_nodes___AMethPropdef____n_methid(fra.me.REG[0]);
+  CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser_prod.nit:1319 */
+  fra.me.REG[0] = ATTR_parser_nodes___AMethPropdef____n_signature(fra.me.REG[0]);
+  CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser_prod___AInternMethPropdef___empty_init(val_t p0, int* init_table){
+  int itpos41 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_AInternMethPropdef].i;
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  if (init_table[itpos41]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 1323;
+  fra.me.meth = LOCATE_parser_prod___AInternMethPropdef___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos41] = 1;
+  return;
+}
+void parser_prod___AInternMethPropdef___init_ainternmethpropdef(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4, val_t p5, val_t p6, int* init_table){
+  int itpos42 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_AInternMethPropdef].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[6];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  if (init_table[itpos42]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 1325;
+  fra.me.meth = LOCATE_parser_prod___AInternMethPropdef___init_ainternmethpropdef;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 7;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  fra.me.REG[3] = p3;
+  fra.me.REG[4] = p4;
+  fra.me.REG[5] = p5;
+  fra.me.REG[6] = p6;
+  /* ./parser//parser_prod.nit:1334 */
+  CALL_parser_prod___AInternMethPropdef___empty_init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  /* ./parser//parser_prod.nit:1335 */
+  ATTR_parser_nodes___APropdef____n_doc(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./parser//parser_prod.nit:1336 */
+  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:1337 */
+    REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+      nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 1337);
+    }
+    CALL_parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  }
+  /* ./parser//parser_prod.nit:1339 */
+  ATTR_parser_nodes___AMethPropdef____n_kwredef(fra.me.REG[0]) = fra.me.REG[2];
+  /* ./parser//parser_prod.nit:1340 */
+  REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:1341 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+      nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 1341);
+    }
+    CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+  }
+  /* ./parser//parser_prod.nit:1343 */
+  REGB0 = TAG_Bool(fra.me.REG[3]!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Cast failed", NULL, LOCATE_parser_prod, 1343);
+  }
+  ATTR_parser_nodes___AMethPropdef____n_visibility(fra.me.REG[0]) = fra.me.REG[3];
+  /* ./parser//parser_prod.nit:1344 */
+  REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+    nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 1344);
+  }
+  CALL_parser_prod___ANode___parent__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[0]);
+  /* ./parser//parser_prod.nit:1345 */
+  REGB0 = TAG_Bool(fra.me.REG[4]!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Cast failed", NULL, LOCATE_parser_prod, 1345);
+  }
+  ATTR_parser_nodes___AInternMethPropdef____n_kwmeth(fra.me.REG[0]) = fra.me.REG[4];
+  /* ./parser//parser_prod.nit:1346 */
+  REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+    nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 1346);
+  }
+  CALL_parser_prod___ANode___parent__eq(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[0]);
+  /* ./parser//parser_prod.nit:1347 */
+  REGB0 = TAG_Bool(fra.me.REG[5]!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Cast failed", NULL, LOCATE_parser_prod, 1347);
+  }
+  ATTR_parser_nodes___AMethPropdef____n_methid(fra.me.REG[0]) = fra.me.REG[5];
+  /* ./parser//parser_prod.nit:1348 */
+  REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+    nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 1348);
+  }
+  CALL_parser_prod___ANode___parent__eq(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[0]);
+  /* ./parser//parser_prod.nit:1349 */
+  REGB0 = TAG_Bool(fra.me.REG[6]!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Cast failed", NULL, LOCATE_parser_prod, 1349);
+  }
+  ATTR_parser_nodes___AMethPropdef____n_signature(fra.me.REG[0]) = fra.me.REG[6];
+  /* ./parser//parser_prod.nit:1350 */
+  REGB0 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+    nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 1350);
+  }
+  CALL_parser_prod___ANode___parent__eq(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  init_table[itpos42] = 1;
+  return;
+}
+void parser_prod___AInternMethPropdef___replace_child(val_t p0, val_t p1, val_t p2){
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 1353;
+  fra.me.meth = LOCATE_parser_prod___AInternMethPropdef___replace_child;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  /* ./parser//parser_prod.nit:1355 */
+  fra.me.REG[3] = ATTR_parser_nodes___APropdef____n_doc(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+      REGB0 = REGB1;
+    }
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:1356 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:1357 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 1357);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:1358 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_ADoc, ID_ADoc)) /*cast ADoc*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 1358);
+      }
+      /* ./parser//parser_prod.nit:1359 */
+      ATTR_parser_nodes___APropdef____n_doc(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:1361 */
+      ATTR_parser_nodes___APropdef____n_doc(fra.me.REG[0]) = NIT_NULL;
+    }
+    /* ./parser//parser_prod.nit:1363 */
+    goto label1;
+  }
+  /* ./parser//parser_prod.nit:1365 */
+  fra.me.REG[3] = ATTR_parser_nodes___AMethPropdef____n_kwredef(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+      REGB0 = REGB1;
+    }
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:1366 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:1367 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 1367);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:1368 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 1368);
+      }
+      /* ./parser//parser_prod.nit:1369 */
+      ATTR_parser_nodes___AMethPropdef____n_kwredef(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:1371 */
+      ATTR_parser_nodes___AMethPropdef____n_kwredef(fra.me.REG[0]) = NIT_NULL;
+    }
+    /* ./parser//parser_prod.nit:1373 */
+    goto label1;
+  }
+  /* ./parser//parser_prod.nit:1375 */
+  fra.me.REG[3] = ATTR_parser_nodes___AMethPropdef____n_visibility(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+      REGB0 = REGB1;
+    }
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:1376 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:1377 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 1377);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:1378 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_AVisibility, ID_AVisibility)) /*cast AVisibility*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 1378);
+      }
+      /* ./parser//parser_prod.nit:1379 */
+      ATTR_parser_nodes___AMethPropdef____n_visibility(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:1381 */
+      nit_abort("Aborted", NULL, LOCATE_parser_prod, 1381);
+    }
+    /* ./parser//parser_prod.nit:1383 */
+    goto label1;
+  }
+  /* ./parser//parser_prod.nit:1385 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AInternMethPropdef____n_kwmeth(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_kwmeth", LOCATE_parser_prod, 1385);
+  }
+  fra.me.REG[3] = ATTR_parser_nodes___AInternMethPropdef____n_kwmeth(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+    REGB0 = REGB1;
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:1386 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:1387 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 1387);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:1388 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_TKwmeth, ID_TKwmeth)) /*cast TKwmeth*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 1388);
+      }
+      /* ./parser//parser_prod.nit:1389 */
+      ATTR_parser_nodes___AInternMethPropdef____n_kwmeth(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:1391 */
+      nit_abort("Aborted", NULL, LOCATE_parser_prod, 1391);
+    }
+    /* ./parser//parser_prod.nit:1393 */
+    goto label1;
+  }
+  /* ./parser//parser_prod.nit:1395 */
+  fra.me.REG[3] = ATTR_parser_nodes___AMethPropdef____n_methid(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+      REGB0 = REGB1;
+    }
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:1396 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:1397 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 1397);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:1398 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_AMethid, ID_AMethid)) /*cast AMethid*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 1398);
+      }
+      /* ./parser//parser_prod.nit:1399 */
+      ATTR_parser_nodes___AMethPropdef____n_methid(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:1401 */
+      nit_abort("Aborted", NULL, LOCATE_parser_prod, 1401);
+    }
+    /* ./parser//parser_prod.nit:1403 */
+    goto label1;
+  }
+  /* ./parser//parser_prod.nit:1405 */
+  fra.me.REG[3] = ATTR_parser_nodes___AMethPropdef____n_signature(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+      REGB0 = REGB1;
+    }
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:1406 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:1407 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 1407);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:1408 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_ASignature, ID_ASignature)) /*cast ASignature*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 1408);
+      }
+      /* ./parser//parser_prod.nit:1409 */
+      ATTR_parser_nodes___AMethPropdef____n_signature(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:1411 */
+      nit_abort("Aborted", NULL, LOCATE_parser_prod, 1411);
+    }
+    /* ./parser//parser_prod.nit:1413 */
+    goto label1;
+  }
+  label1: while(0);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser_prod___AInternMethPropdef___visit_all(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 1417;
+  fra.me.meth = LOCATE_parser_prod___AInternMethPropdef___visit_all;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:1419 */
+  fra.me.REG[2] = ATTR_parser_nodes___APropdef____n_doc(fra.me.REG[0]);
+  REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:1420 */
+    fra.me.REG[2] = ATTR_parser_nodes___APropdef____n_doc(fra.me.REG[0]);
+    REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_ADoc, ID_ADoc)) /*cast ADoc*/;
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      nit_abort("Cast failed", NULL, LOCATE_parser_prod, 1420);
+    }
+    CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  }
+  /* ./parser//parser_prod.nit:1422 */
+  fra.me.REG[2] = ATTR_parser_nodes___AMethPropdef____n_kwredef(fra.me.REG[0]);
+  REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:1423 */
+    fra.me.REG[2] = ATTR_parser_nodes___AMethPropdef____n_kwredef(fra.me.REG[0]);
+    REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      nit_abort("Cast failed", NULL, LOCATE_parser_prod, 1423);
+    }
+    CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  }
+  /* ./parser//parser_prod.nit:1425 */
+  fra.me.REG[2] = ATTR_parser_nodes___AMethPropdef____n_visibility(fra.me.REG[0]);
+  CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser_prod.nit:1426 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AInternMethPropdef____n_kwmeth(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_kwmeth", LOCATE_parser_prod, 1426);
+  }
+  fra.me.REG[2] = ATTR_parser_nodes___AInternMethPropdef____n_kwmeth(fra.me.REG[0]);
+  CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser_prod.nit:1427 */
+  fra.me.REG[2] = ATTR_parser_nodes___AMethPropdef____n_methid(fra.me.REG[0]);
+  CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser_prod.nit:1428 */
+  fra.me.REG[0] = ATTR_parser_nodes___AMethPropdef____n_signature(fra.me.REG[0]);
+  CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser_prod___AExternMethPropdef___empty_init(val_t p0, int* init_table){
+  int itpos43 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_AExternMethPropdef].i;
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  if (init_table[itpos43]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 1432;
+  fra.me.meth = LOCATE_parser_prod___AExternMethPropdef___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos43] = 1;
+  return;
+}
+void parser_prod___AExternMethPropdef___init_aexternmethpropdef(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4, val_t p5, val_t p6, val_t p7, int* init_table){
+  int itpos44 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_AExternMethPropdef].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[7];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  if (init_table[itpos44]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 1434;
+  fra.me.meth = LOCATE_parser_prod___AExternMethPropdef___init_aexternmethpropdef;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 8;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  fra.me.REG[3] = p3;
+  fra.me.REG[4] = p4;
+  fra.me.REG[5] = p5;
+  fra.me.REG[6] = p6;
+  fra.me.REG[7] = p7;
+  /* ./parser//parser_prod.nit:1444 */
+  CALL_parser_prod___AExternMethPropdef___empty_init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  /* ./parser//parser_prod.nit:1445 */
+  ATTR_parser_nodes___APropdef____n_doc(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./parser//parser_prod.nit:1446 */
+  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:1447 */
+    REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+      nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 1447);
+    }
+    CALL_parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  }
+  /* ./parser//parser_prod.nit:1449 */
+  ATTR_parser_nodes___AMethPropdef____n_kwredef(fra.me.REG[0]) = fra.me.REG[2];
+  /* ./parser//parser_prod.nit:1450 */
+  REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:1451 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+      nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 1451);
+    }
+    CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+  }
+  /* ./parser//parser_prod.nit:1453 */
+  REGB0 = TAG_Bool(fra.me.REG[3]!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Cast failed", NULL, LOCATE_parser_prod, 1453);
+  }
+  ATTR_parser_nodes___AMethPropdef____n_visibility(fra.me.REG[0]) = fra.me.REG[3];
+  /* ./parser//parser_prod.nit:1454 */
+  REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+    nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 1454);
+  }
+  CALL_parser_prod___ANode___parent__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[0]);
+  /* ./parser//parser_prod.nit:1455 */
+  REGB0 = TAG_Bool(fra.me.REG[4]!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Cast failed", NULL, LOCATE_parser_prod, 1455);
+  }
+  ATTR_parser_nodes___AExternMethPropdef____n_kwmeth(fra.me.REG[0]) = fra.me.REG[4];
+  /* ./parser//parser_prod.nit:1456 */
+  REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+    nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 1456);
+  }
+  CALL_parser_prod___ANode___parent__eq(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[0]);
+  /* ./parser//parser_prod.nit:1457 */
+  REGB0 = TAG_Bool(fra.me.REG[5]!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Cast failed", NULL, LOCATE_parser_prod, 1457);
+  }
+  ATTR_parser_nodes___AMethPropdef____n_methid(fra.me.REG[0]) = fra.me.REG[5];
+  /* ./parser//parser_prod.nit:1458 */
+  REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+    nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 1458);
+  }
+  CALL_parser_prod___ANode___parent__eq(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[0]);
+  /* ./parser//parser_prod.nit:1459 */
+  REGB0 = TAG_Bool(fra.me.REG[6]!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Cast failed", NULL, LOCATE_parser_prod, 1459);
+  }
+  ATTR_parser_nodes___AMethPropdef____n_signature(fra.me.REG[0]) = fra.me.REG[6];
+  /* ./parser//parser_prod.nit:1460 */
+  REGB0 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+    nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 1460);
+  }
+  CALL_parser_prod___ANode___parent__eq(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[0]);
+  /* ./parser//parser_prod.nit:1461 */
+  ATTR_parser_nodes___AExternMethPropdef____n_extern(fra.me.REG[0]) = fra.me.REG[7];
+  /* ./parser//parser_prod.nit:1462 */
+  REGB0 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[7])(fra.me.REG[7], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:1463 */
+    REGB0 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+      nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 1463);
+    }
+    CALL_parser_prod___ANode___parent__eq(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[0]);
+  }
+  stack_frame_head = fra.me.prev;
+  init_table[itpos44] = 1;
+  return;
+}
+void parser_prod___AExternMethPropdef___replace_child(val_t p0, val_t p1, val_t p2){
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 1467;
+  fra.me.meth = LOCATE_parser_prod___AExternMethPropdef___replace_child;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  /* ./parser//parser_prod.nit:1469 */
+  fra.me.REG[3] = ATTR_parser_nodes___APropdef____n_doc(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+      REGB0 = REGB1;
+    }
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:1470 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:1471 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 1471);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:1472 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_ADoc, ID_ADoc)) /*cast ADoc*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 1472);
+      }
+      /* ./parser//parser_prod.nit:1473 */
+      ATTR_parser_nodes___APropdef____n_doc(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:1475 */
+      ATTR_parser_nodes___APropdef____n_doc(fra.me.REG[0]) = NIT_NULL;
+    }
+    /* ./parser//parser_prod.nit:1477 */
+    goto label1;
+  }
+  /* ./parser//parser_prod.nit:1479 */
+  fra.me.REG[3] = ATTR_parser_nodes___AMethPropdef____n_kwredef(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+      REGB0 = REGB1;
+    }
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:1480 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:1481 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 1481);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:1482 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 1482);
+      }
+      /* ./parser//parser_prod.nit:1483 */
+      ATTR_parser_nodes___AMethPropdef____n_kwredef(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:1485 */
+      ATTR_parser_nodes___AMethPropdef____n_kwredef(fra.me.REG[0]) = NIT_NULL;
+    }
+    /* ./parser//parser_prod.nit:1487 */
+    goto label1;
+  }
+  /* ./parser//parser_prod.nit:1489 */
+  fra.me.REG[3] = ATTR_parser_nodes___AMethPropdef____n_visibility(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+      REGB0 = REGB1;
+    }
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:1490 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:1491 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 1491);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:1492 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_AVisibility, ID_AVisibility)) /*cast AVisibility*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 1492);
+      }
+      /* ./parser//parser_prod.nit:1493 */
+      ATTR_parser_nodes___AMethPropdef____n_visibility(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:1495 */
+      nit_abort("Aborted", NULL, LOCATE_parser_prod, 1495);
+    }
+    /* ./parser//parser_prod.nit:1497 */
+    goto label1;
+  }
+  /* ./parser//parser_prod.nit:1499 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AExternMethPropdef____n_kwmeth(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_kwmeth", LOCATE_parser_prod, 1499);
+  }
+  fra.me.REG[3] = ATTR_parser_nodes___AExternMethPropdef____n_kwmeth(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+    REGB0 = REGB1;
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:1500 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:1501 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 1501);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:1502 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_TKwmeth, ID_TKwmeth)) /*cast TKwmeth*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 1502);
+      }
+      /* ./parser//parser_prod.nit:1503 */
+      ATTR_parser_nodes___AExternMethPropdef____n_kwmeth(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:1505 */
+      nit_abort("Aborted", NULL, LOCATE_parser_prod, 1505);
+    }
+    /* ./parser//parser_prod.nit:1507 */
+    goto label1;
+  }
+  /* ./parser//parser_prod.nit:1509 */
+  fra.me.REG[3] = ATTR_parser_nodes___AMethPropdef____n_methid(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+      REGB0 = REGB1;
+    }
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:1510 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:1511 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 1511);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:1512 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_AMethid, ID_AMethid)) /*cast AMethid*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 1512);
+      }
+      /* ./parser//parser_prod.nit:1513 */
+      ATTR_parser_nodes___AMethPropdef____n_methid(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:1515 */
+      nit_abort("Aborted", NULL, LOCATE_parser_prod, 1515);
+    }
+    /* ./parser//parser_prod.nit:1517 */
+    goto label1;
+  }
+  /* ./parser//parser_prod.nit:1519 */
+  fra.me.REG[3] = ATTR_parser_nodes___AMethPropdef____n_signature(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+      REGB0 = REGB1;
+    }
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:1520 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:1521 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 1521);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:1522 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_ASignature, ID_ASignature)) /*cast ASignature*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 1522);
+      }
+      /* ./parser//parser_prod.nit:1523 */
+      ATTR_parser_nodes___AMethPropdef____n_signature(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:1525 */
+      nit_abort("Aborted", NULL, LOCATE_parser_prod, 1525);
+    }
+    /* ./parser//parser_prod.nit:1527 */
+    goto label1;
+  }
+  /* ./parser//parser_prod.nit:1529 */
+  fra.me.REG[3] = ATTR_parser_nodes___AExternMethPropdef____n_extern(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+      REGB0 = REGB1;
+    }
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:1530 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:1531 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 1531);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:1532 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_TString, ID_TString)) /*cast TString*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 1532);
+      }
+      /* ./parser//parser_prod.nit:1533 */
+      ATTR_parser_nodes___AExternMethPropdef____n_extern(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:1535 */
+      ATTR_parser_nodes___AExternMethPropdef____n_extern(fra.me.REG[0]) = NIT_NULL;
+    }
+    /* ./parser//parser_prod.nit:1537 */
+    goto label1;
+  }
+  label1: while(0);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser_prod___AExternMethPropdef___visit_all(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 1541;
+  fra.me.meth = LOCATE_parser_prod___AExternMethPropdef___visit_all;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:1543 */
+  fra.me.REG[2] = ATTR_parser_nodes___APropdef____n_doc(fra.me.REG[0]);
+  REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:1544 */
+    fra.me.REG[2] = ATTR_parser_nodes___APropdef____n_doc(fra.me.REG[0]);
+    REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_ADoc, ID_ADoc)) /*cast ADoc*/;
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      nit_abort("Cast failed", NULL, LOCATE_parser_prod, 1544);
+    }
+    CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  }
+  /* ./parser//parser_prod.nit:1546 */
+  fra.me.REG[2] = ATTR_parser_nodes___AMethPropdef____n_kwredef(fra.me.REG[0]);
+  REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:1547 */
+    fra.me.REG[2] = ATTR_parser_nodes___AMethPropdef____n_kwredef(fra.me.REG[0]);
+    REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      nit_abort("Cast failed", NULL, LOCATE_parser_prod, 1547);
+    }
+    CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  }
+  /* ./parser//parser_prod.nit:1549 */
+  fra.me.REG[2] = ATTR_parser_nodes___AMethPropdef____n_visibility(fra.me.REG[0]);
+  CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser_prod.nit:1550 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AExternMethPropdef____n_kwmeth(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_kwmeth", LOCATE_parser_prod, 1550);
+  }
+  fra.me.REG[2] = ATTR_parser_nodes___AExternMethPropdef____n_kwmeth(fra.me.REG[0]);
+  CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser_prod.nit:1551 */
+  fra.me.REG[2] = ATTR_parser_nodes___AMethPropdef____n_methid(fra.me.REG[0]);
+  CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser_prod.nit:1552 */
+  fra.me.REG[2] = ATTR_parser_nodes___AMethPropdef____n_signature(fra.me.REG[0]);
+  CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser_prod.nit:1553 */
+  fra.me.REG[2] = ATTR_parser_nodes___AExternMethPropdef____n_extern(fra.me.REG[0]);
+  REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:1554 */
+    fra.me.REG[0] = ATTR_parser_nodes___AExternMethPropdef____n_extern(fra.me.REG[0]);
+    REGB0 = TAG_Bool((fra.me.REG[0]!=NIT_NULL) && VAL_ISA(fra.me.REG[0], COLOR_TString, ID_TString)) /*cast TString*/;
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      nit_abort("Cast failed", NULL, LOCATE_parser_prod, 1554);
+    }
+    CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  }
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser_prod___AConcreteMethPropdef___empty_init(val_t p0, int* init_table){
+  int itpos45 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_AConcreteMethPropdef].i;
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  if (init_table[itpos45]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 1559;
+  fra.me.meth = LOCATE_parser_prod___AConcreteMethPropdef___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos45] = 1;
+  return;
+}
+void parser_prod___AConcreteMethPropdef___init_aconcretemethpropdef(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4, val_t p5, val_t p6, val_t p7, int* init_table){
+  int itpos46 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_AConcreteMethPropdef].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[7];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  if (init_table[itpos46]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 1561;
+  fra.me.meth = LOCATE_parser_prod___AConcreteMethPropdef___init_aconcretemethpropdef;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 8;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  fra.me.REG[3] = p3;
+  fra.me.REG[4] = p4;
+  fra.me.REG[5] = p5;
+  fra.me.REG[6] = p6;
+  fra.me.REG[7] = p7;
+  /* ./parser//parser_prod.nit:1571 */
+  CALL_parser_prod___AConcreteMethPropdef___empty_init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  /* ./parser//parser_prod.nit:1572 */
+  ATTR_parser_nodes___APropdef____n_doc(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./parser//parser_prod.nit:1573 */
+  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:1574 */
+    REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+      nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 1574);
+    }
+    CALL_parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  }
+  /* ./parser//parser_prod.nit:1576 */
+  ATTR_parser_nodes___AMethPropdef____n_kwredef(fra.me.REG[0]) = fra.me.REG[2];
+  /* ./parser//parser_prod.nit:1577 */
+  REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:1578 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+      nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 1578);
+    }
+    CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+  }
+  /* ./parser//parser_prod.nit:1580 */
+  REGB0 = TAG_Bool(fra.me.REG[3]!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Cast failed", NULL, LOCATE_parser_prod, 1580);
+  }
+  ATTR_parser_nodes___AMethPropdef____n_visibility(fra.me.REG[0]) = fra.me.REG[3];
+  /* ./parser//parser_prod.nit:1581 */
+  REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+    nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 1581);
+  }
+  CALL_parser_prod___ANode___parent__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[0]);
+  /* ./parser//parser_prod.nit:1582 */
+  REGB0 = TAG_Bool(fra.me.REG[4]!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Cast failed", NULL, LOCATE_parser_prod, 1582);
+  }
+  ATTR_parser_nodes___AConcreteMethPropdef____n_kwmeth(fra.me.REG[0]) = fra.me.REG[4];
+  /* ./parser//parser_prod.nit:1583 */
+  REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+    nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 1583);
+  }
+  CALL_parser_prod___ANode___parent__eq(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[0]);
+  /* ./parser//parser_prod.nit:1584 */
+  REGB0 = TAG_Bool(fra.me.REG[5]!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Cast failed", NULL, LOCATE_parser_prod, 1584);
+  }
+  ATTR_parser_nodes___AMethPropdef____n_methid(fra.me.REG[0]) = fra.me.REG[5];
+  /* ./parser//parser_prod.nit:1585 */
+  REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+    nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 1585);
+  }
+  CALL_parser_prod___ANode___parent__eq(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[0]);
+  /* ./parser//parser_prod.nit:1586 */
+  REGB0 = TAG_Bool(fra.me.REG[6]!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Cast failed", NULL, LOCATE_parser_prod, 1586);
+  }
+  ATTR_parser_nodes___AMethPropdef____n_signature(fra.me.REG[0]) = fra.me.REG[6];
+  /* ./parser//parser_prod.nit:1587 */
+  REGB0 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+    nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 1587);
+  }
+  CALL_parser_prod___ANode___parent__eq(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[0]);
+  /* ./parser//parser_prod.nit:1588 */
+  ATTR_parser_nodes___AConcreteMethPropdef____n_block(fra.me.REG[0]) = fra.me.REG[7];
+  /* ./parser//parser_prod.nit:1589 */
+  REGB0 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[7])(fra.me.REG[7], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:1590 */
+    REGB0 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+      nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 1590);
+    }
+    CALL_parser_prod___ANode___parent__eq(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[0]);
+  }
+  stack_frame_head = fra.me.prev;
+  init_table[itpos46] = 1;
+  return;
+}
+void parser_prod___AConcreteMethPropdef___replace_child(val_t p0, val_t p1, val_t p2){
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 1594;
+  fra.me.meth = LOCATE_parser_prod___AConcreteMethPropdef___replace_child;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  /* ./parser//parser_prod.nit:1596 */
+  fra.me.REG[3] = ATTR_parser_nodes___APropdef____n_doc(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+      REGB0 = REGB1;
+    }
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:1597 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:1598 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 1598);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:1599 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_ADoc, ID_ADoc)) /*cast ADoc*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 1599);
+      }
+      /* ./parser//parser_prod.nit:1600 */
+      ATTR_parser_nodes___APropdef____n_doc(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:1602 */
+      ATTR_parser_nodes___APropdef____n_doc(fra.me.REG[0]) = NIT_NULL;
+    }
+    /* ./parser//parser_prod.nit:1604 */
+    goto label1;
+  }
+  /* ./parser//parser_prod.nit:1606 */
+  fra.me.REG[3] = ATTR_parser_nodes___AMethPropdef____n_kwredef(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+      REGB0 = REGB1;
+    }
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:1607 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:1608 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 1608);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:1609 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 1609);
+      }
+      /* ./parser//parser_prod.nit:1610 */
+      ATTR_parser_nodes___AMethPropdef____n_kwredef(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:1612 */
+      ATTR_parser_nodes___AMethPropdef____n_kwredef(fra.me.REG[0]) = NIT_NULL;
+    }
+    /* ./parser//parser_prod.nit:1614 */
+    goto label1;
+  }
+  /* ./parser//parser_prod.nit:1616 */
+  fra.me.REG[3] = ATTR_parser_nodes___AMethPropdef____n_visibility(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+      REGB0 = REGB1;
+    }
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:1617 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:1618 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 1618);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:1619 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_AVisibility, ID_AVisibility)) /*cast AVisibility*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 1619);
+      }
+      /* ./parser//parser_prod.nit:1620 */
+      ATTR_parser_nodes___AMethPropdef____n_visibility(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:1622 */
+      nit_abort("Aborted", NULL, LOCATE_parser_prod, 1622);
+    }
+    /* ./parser//parser_prod.nit:1624 */
+    goto label1;
+  }
+  /* ./parser//parser_prod.nit:1626 */
+  fra.me.REG[3] = ATTR_parser_nodes___AConcreteMethPropdef____n_kwmeth(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+      REGB0 = REGB1;
+    }
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:1627 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:1628 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 1628);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:1629 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_TKwmeth, ID_TKwmeth)) /*cast TKwmeth*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 1629);
+      }
+      /* ./parser//parser_prod.nit:1630 */
+      ATTR_parser_nodes___AConcreteMethPropdef____n_kwmeth(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:1632 */
+      nit_abort("Aborted", NULL, LOCATE_parser_prod, 1632);
+    }
+    /* ./parser//parser_prod.nit:1634 */
+    goto label1;
+  }
+  /* ./parser//parser_prod.nit:1636 */
+  fra.me.REG[3] = ATTR_parser_nodes___AMethPropdef____n_methid(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+      REGB0 = REGB1;
+    }
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:1637 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:1638 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 1638);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:1639 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_AMethid, ID_AMethid)) /*cast AMethid*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 1639);
+      }
+      /* ./parser//parser_prod.nit:1640 */
+      ATTR_parser_nodes___AMethPropdef____n_methid(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:1642 */
+      nit_abort("Aborted", NULL, LOCATE_parser_prod, 1642);
+    }
+    /* ./parser//parser_prod.nit:1644 */
+    goto label1;
+  }
+  /* ./parser//parser_prod.nit:1646 */
+  fra.me.REG[3] = ATTR_parser_nodes___AMethPropdef____n_signature(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+      REGB0 = REGB1;
+    }
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:1647 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:1648 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 1648);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:1649 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_ASignature, ID_ASignature)) /*cast ASignature*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 1649);
+      }
+      /* ./parser//parser_prod.nit:1650 */
+      ATTR_parser_nodes___AMethPropdef____n_signature(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:1652 */
+      nit_abort("Aborted", NULL, LOCATE_parser_prod, 1652);
+    }
+    /* ./parser//parser_prod.nit:1654 */
+    goto label1;
+  }
+  /* ./parser//parser_prod.nit:1656 */
+  fra.me.REG[3] = ATTR_parser_nodes___AConcreteMethPropdef____n_block(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+      REGB0 = REGB1;
+    }
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:1657 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:1658 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 1658);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:1659 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_AExpr, ID_AExpr)) /*cast AExpr*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 1659);
+      }
+      /* ./parser//parser_prod.nit:1660 */
+      ATTR_parser_nodes___AConcreteMethPropdef____n_block(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:1662 */
+      ATTR_parser_nodes___AConcreteMethPropdef____n_block(fra.me.REG[0]) = NIT_NULL;
+    }
+    /* ./parser//parser_prod.nit:1664 */
+    goto label1;
+  }
+  label1: while(0);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser_prod___AConcreteMethPropdef___visit_all(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 1668;
+  fra.me.meth = LOCATE_parser_prod___AConcreteMethPropdef___visit_all;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:1670 */
+  fra.me.REG[2] = ATTR_parser_nodes___APropdef____n_doc(fra.me.REG[0]);
+  REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:1671 */
+    fra.me.REG[2] = ATTR_parser_nodes___APropdef____n_doc(fra.me.REG[0]);
+    REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_ADoc, ID_ADoc)) /*cast ADoc*/;
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      nit_abort("Cast failed", NULL, LOCATE_parser_prod, 1671);
+    }
+    CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  }
+  /* ./parser//parser_prod.nit:1673 */
+  fra.me.REG[2] = ATTR_parser_nodes___AMethPropdef____n_kwredef(fra.me.REG[0]);
+  REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:1674 */
+    fra.me.REG[2] = ATTR_parser_nodes___AMethPropdef____n_kwredef(fra.me.REG[0]);
+    REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      nit_abort("Cast failed", NULL, LOCATE_parser_prod, 1674);
+    }
+    CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  }
+  /* ./parser//parser_prod.nit:1676 */
+  fra.me.REG[2] = ATTR_parser_nodes___AMethPropdef____n_visibility(fra.me.REG[0]);
+  CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser_prod.nit:1677 */
+  fra.me.REG[2] = ATTR_parser_nodes___AConcreteMethPropdef____n_kwmeth(fra.me.REG[0]);
+  CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser_prod.nit:1678 */
+  fra.me.REG[2] = ATTR_parser_nodes___AMethPropdef____n_methid(fra.me.REG[0]);
+  CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser_prod.nit:1679 */
+  fra.me.REG[2] = ATTR_parser_nodes___AMethPropdef____n_signature(fra.me.REG[0]);
+  CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser_prod.nit:1680 */
+  fra.me.REG[2] = ATTR_parser_nodes___AConcreteMethPropdef____n_block(fra.me.REG[0]);
+  REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:1681 */
+    fra.me.REG[0] = ATTR_parser_nodes___AConcreteMethPropdef____n_block(fra.me.REG[0]);
+    REGB0 = TAG_Bool((fra.me.REG[0]!=NIT_NULL) && VAL_ISA(fra.me.REG[0], COLOR_AExpr, ID_AExpr)) /*cast AExpr*/;
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      nit_abort("Cast failed", NULL, LOCATE_parser_prod, 1681);
+    }
+    CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  }
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser_prod___AConcreteInitPropdef___empty_init(val_t p0, int* init_table){
+  int itpos47 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_AConcreteInitPropdef].i;
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  if (init_table[itpos47]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 1686;
+  fra.me.meth = LOCATE_parser_prod___AConcreteInitPropdef___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos47] = 1;
+  return;
+}
+void parser_prod___AConcreteInitPropdef___init_aconcreteinitpropdef(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4, val_t p5, val_t p6, val_t p7, int* init_table){
+  int itpos48 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_AConcreteInitPropdef].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[7];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  if (init_table[itpos48]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 1688;
+  fra.me.meth = LOCATE_parser_prod___AConcreteInitPropdef___init_aconcreteinitpropdef;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 8;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  fra.me.REG[3] = p3;
+  fra.me.REG[4] = p4;
+  fra.me.REG[5] = p5;
+  fra.me.REG[6] = p6;
+  fra.me.REG[7] = p7;
+  /* ./parser//parser_prod.nit:1698 */
+  CALL_parser_prod___AConcreteInitPropdef___empty_init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  /* ./parser//parser_prod.nit:1699 */
+  ATTR_parser_nodes___APropdef____n_doc(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./parser//parser_prod.nit:1700 */
+  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:1701 */
+    REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+      nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 1701);
+    }
+    CALL_parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  }
+  /* ./parser//parser_prod.nit:1703 */
+  ATTR_parser_nodes___AMethPropdef____n_kwredef(fra.me.REG[0]) = fra.me.REG[2];
+  /* ./parser//parser_prod.nit:1704 */
+  REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:1705 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+      nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 1705);
+    }
+    CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+  }
+  /* ./parser//parser_prod.nit:1707 */
+  REGB0 = TAG_Bool(fra.me.REG[3]!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Cast failed", NULL, LOCATE_parser_prod, 1707);
+  }
+  ATTR_parser_nodes___AMethPropdef____n_visibility(fra.me.REG[0]) = fra.me.REG[3];
+  /* ./parser//parser_prod.nit:1708 */
+  REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+    nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 1708);
+  }
+  CALL_parser_prod___ANode___parent__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[0]);
+  /* ./parser//parser_prod.nit:1709 */
+  REGB0 = TAG_Bool(fra.me.REG[4]!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Cast failed", NULL, LOCATE_parser_prod, 1709);
+  }
+  ATTR_parser_nodes___AConcreteInitPropdef____n_kwinit(fra.me.REG[0]) = fra.me.REG[4];
+  /* ./parser//parser_prod.nit:1710 */
+  REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+    nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 1710);
+  }
+  CALL_parser_prod___ANode___parent__eq(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[0]);
+  /* ./parser//parser_prod.nit:1711 */
+  ATTR_parser_nodes___AMethPropdef____n_methid(fra.me.REG[0]) = fra.me.REG[5];
+  /* ./parser//parser_prod.nit:1712 */
+  REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[5])(fra.me.REG[5], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:1713 */
+    REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+      nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 1713);
+    }
+    CALL_parser_prod___ANode___parent__eq(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[0]);
+  }
+  /* ./parser//parser_prod.nit:1715 */
+  REGB0 = TAG_Bool(fra.me.REG[6]!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Cast failed", NULL, LOCATE_parser_prod, 1715);
+  }
+  ATTR_parser_nodes___AMethPropdef____n_signature(fra.me.REG[0]) = fra.me.REG[6];
+  /* ./parser//parser_prod.nit:1716 */
+  REGB0 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+    nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 1716);
+  }
+  CALL_parser_prod___ANode___parent__eq(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[0]);
+  /* ./parser//parser_prod.nit:1717 */
+  ATTR_parser_nodes___AConcreteMethPropdef____n_block(fra.me.REG[0]) = fra.me.REG[7];
+  /* ./parser//parser_prod.nit:1718 */
+  REGB0 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[7])(fra.me.REG[7], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:1719 */
+    REGB0 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+      nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 1719);
+    }
+    CALL_parser_prod___ANode___parent__eq(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[0]);
+  }
+  stack_frame_head = fra.me.prev;
+  init_table[itpos48] = 1;
+  return;
+}
+void parser_prod___AConcreteInitPropdef___replace_child(val_t p0, val_t p1, val_t p2){
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 1723;
+  fra.me.meth = LOCATE_parser_prod___AConcreteInitPropdef___replace_child;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  /* ./parser//parser_prod.nit:1725 */
+  fra.me.REG[3] = ATTR_parser_nodes___APropdef____n_doc(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+      REGB0 = REGB1;
+    }
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:1726 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:1727 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 1727);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:1728 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_ADoc, ID_ADoc)) /*cast ADoc*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 1728);
+      }
+      /* ./parser//parser_prod.nit:1729 */
+      ATTR_parser_nodes___APropdef____n_doc(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:1731 */
+      ATTR_parser_nodes___APropdef____n_doc(fra.me.REG[0]) = NIT_NULL;
+    }
+    /* ./parser//parser_prod.nit:1733 */
+    goto label1;
+  }
+  /* ./parser//parser_prod.nit:1735 */
+  fra.me.REG[3] = ATTR_parser_nodes___AMethPropdef____n_kwredef(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+      REGB0 = REGB1;
+    }
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:1736 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:1737 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 1737);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:1738 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 1738);
+      }
+      /* ./parser//parser_prod.nit:1739 */
+      ATTR_parser_nodes___AMethPropdef____n_kwredef(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:1741 */
+      ATTR_parser_nodes___AMethPropdef____n_kwredef(fra.me.REG[0]) = NIT_NULL;
+    }
+    /* ./parser//parser_prod.nit:1743 */
+    goto label1;
+  }
+  /* ./parser//parser_prod.nit:1745 */
+  fra.me.REG[3] = ATTR_parser_nodes___AMethPropdef____n_visibility(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+      REGB0 = REGB1;
+    }
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:1746 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:1747 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 1747);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:1748 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_AVisibility, ID_AVisibility)) /*cast AVisibility*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 1748);
+      }
+      /* ./parser//parser_prod.nit:1749 */
+      ATTR_parser_nodes___AMethPropdef____n_visibility(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:1751 */
+      nit_abort("Aborted", NULL, LOCATE_parser_prod, 1751);
+    }
+    /* ./parser//parser_prod.nit:1753 */
+    goto label1;
+  }
+  /* ./parser//parser_prod.nit:1755 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AConcreteInitPropdef____n_kwinit(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_kwinit", LOCATE_parser_prod, 1755);
+  }
+  fra.me.REG[3] = ATTR_parser_nodes___AConcreteInitPropdef____n_kwinit(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+    REGB0 = REGB1;
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:1756 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:1757 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 1757);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:1758 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_TKwinit, ID_TKwinit)) /*cast TKwinit*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 1758);
+      }
+      /* ./parser//parser_prod.nit:1759 */
+      ATTR_parser_nodes___AConcreteInitPropdef____n_kwinit(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:1761 */
+      nit_abort("Aborted", NULL, LOCATE_parser_prod, 1761);
+    }
+    /* ./parser//parser_prod.nit:1763 */
+    goto label1;
+  }
+  /* ./parser//parser_prod.nit:1765 */
+  fra.me.REG[3] = ATTR_parser_nodes___AMethPropdef____n_methid(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+      REGB0 = REGB1;
+    }
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:1766 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:1767 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 1767);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:1768 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_AMethid, ID_AMethid)) /*cast AMethid*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 1768);
+      }
+      /* ./parser//parser_prod.nit:1769 */
+      ATTR_parser_nodes___AMethPropdef____n_methid(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:1771 */
+      ATTR_parser_nodes___AMethPropdef____n_methid(fra.me.REG[0]) = NIT_NULL;
+    }
+    /* ./parser//parser_prod.nit:1773 */
+    goto label1;
+  }
+  /* ./parser//parser_prod.nit:1775 */
+  fra.me.REG[3] = ATTR_parser_nodes___AMethPropdef____n_signature(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+      REGB0 = REGB1;
+    }
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:1776 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:1777 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 1777);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:1778 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_ASignature, ID_ASignature)) /*cast ASignature*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 1778);
+      }
+      /* ./parser//parser_prod.nit:1779 */
+      ATTR_parser_nodes___AMethPropdef____n_signature(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:1781 */
+      nit_abort("Aborted", NULL, LOCATE_parser_prod, 1781);
+    }
+    /* ./parser//parser_prod.nit:1783 */
+    goto label1;
+  }
+  /* ./parser//parser_prod.nit:1785 */
+  fra.me.REG[3] = ATTR_parser_nodes___AConcreteMethPropdef____n_block(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+      REGB0 = REGB1;
+    }
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:1786 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:1787 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 1787);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:1788 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_AExpr, ID_AExpr)) /*cast AExpr*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 1788);
+      }
+      /* ./parser//parser_prod.nit:1789 */
+      ATTR_parser_nodes___AConcreteMethPropdef____n_block(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:1791 */
+      ATTR_parser_nodes___AConcreteMethPropdef____n_block(fra.me.REG[0]) = NIT_NULL;
+    }
+    /* ./parser//parser_prod.nit:1793 */
+    goto label1;
+  }
+  label1: while(0);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser_prod___AConcreteInitPropdef___visit_all(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 1797;
+  fra.me.meth = LOCATE_parser_prod___AConcreteInitPropdef___visit_all;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:1799 */
+  fra.me.REG[2] = ATTR_parser_nodes___APropdef____n_doc(fra.me.REG[0]);
+  REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:1800 */
+    fra.me.REG[2] = ATTR_parser_nodes___APropdef____n_doc(fra.me.REG[0]);
+    REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_ADoc, ID_ADoc)) /*cast ADoc*/;
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      nit_abort("Cast failed", NULL, LOCATE_parser_prod, 1800);
+    }
+    CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  }
+  /* ./parser//parser_prod.nit:1802 */
+  fra.me.REG[2] = ATTR_parser_nodes___AMethPropdef____n_kwredef(fra.me.REG[0]);
+  REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:1803 */
+    fra.me.REG[2] = ATTR_parser_nodes___AMethPropdef____n_kwredef(fra.me.REG[0]);
+    REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      nit_abort("Cast failed", NULL, LOCATE_parser_prod, 1803);
+    }
+    CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  }
+  /* ./parser//parser_prod.nit:1805 */
+  fra.me.REG[2] = ATTR_parser_nodes___AMethPropdef____n_visibility(fra.me.REG[0]);
+  CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser_prod.nit:1806 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AConcreteInitPropdef____n_kwinit(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_kwinit", LOCATE_parser_prod, 1806);
+  }
+  fra.me.REG[2] = ATTR_parser_nodes___AConcreteInitPropdef____n_kwinit(fra.me.REG[0]);
+  CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser_prod.nit:1807 */
+  fra.me.REG[2] = ATTR_parser_nodes___AMethPropdef____n_methid(fra.me.REG[0]);
+  REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:1808 */
+    fra.me.REG[2] = ATTR_parser_nodes___AMethPropdef____n_methid(fra.me.REG[0]);
+    REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_AMethid, ID_AMethid)) /*cast AMethid*/;
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      nit_abort("Cast failed", NULL, LOCATE_parser_prod, 1808);
+    }
+    CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  }
+  /* ./parser//parser_prod.nit:1810 */
+  fra.me.REG[2] = ATTR_parser_nodes___AMethPropdef____n_signature(fra.me.REG[0]);
+  CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser_prod.nit:1811 */
+  fra.me.REG[2] = ATTR_parser_nodes___AConcreteMethPropdef____n_block(fra.me.REG[0]);
+  REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:1812 */
+    fra.me.REG[0] = ATTR_parser_nodes___AConcreteMethPropdef____n_block(fra.me.REG[0]);
+    REGB0 = TAG_Bool((fra.me.REG[0]!=NIT_NULL) && VAL_ISA(fra.me.REG[0], COLOR_AExpr, ID_AExpr)) /*cast AExpr*/;
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      nit_abort("Cast failed", NULL, LOCATE_parser_prod, 1812);
+    }
+    CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  }
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser_prod___AMainMethPropdef___empty_init(val_t p0, int* init_table){
+  int itpos49 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_AMainMethPropdef].i;
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  if (init_table[itpos49]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 1817;
+  fra.me.meth = LOCATE_parser_prod___AMainMethPropdef___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos49] = 1;
+  return;
+}
+void parser_prod___AMainMethPropdef___init_amainmethpropdef(val_t p0, val_t p1, val_t p2, int* init_table){
+  int itpos50 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_AMainMethPropdef].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  if (init_table[itpos50]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 1819;
+  fra.me.meth = LOCATE_parser_prod___AMainMethPropdef___init_amainmethpropdef;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  /* ./parser//parser_prod.nit:1824 */
+  CALL_parser_prod___AMainMethPropdef___empty_init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  /* ./parser//parser_prod.nit:1825 */
+  ATTR_parser_nodes___AMethPropdef____n_kwredef(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./parser//parser_prod.nit:1826 */
+  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:1827 */
+    REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+      nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 1827);
+    }
+    CALL_parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  }
+  /* ./parser//parser_prod.nit:1829 */
+  ATTR_parser_nodes___AConcreteMethPropdef____n_block(fra.me.REG[0]) = fra.me.REG[2];
+  /* ./parser//parser_prod.nit:1830 */
+  REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:1831 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+      nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 1831);
+    }
+    CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+  }
+  stack_frame_head = fra.me.prev;
+  init_table[itpos50] = 1;
+  return;
+}
+void parser_prod___AMainMethPropdef___replace_child(val_t p0, val_t p1, val_t p2){
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 1835;
+  fra.me.meth = LOCATE_parser_prod___AMainMethPropdef___replace_child;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  /* ./parser//parser_prod.nit:1837 */
+  fra.me.REG[3] = ATTR_parser_nodes___AMethPropdef____n_kwredef(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+      REGB0 = REGB1;
+    }
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:1838 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:1839 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 1839);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:1840 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 1840);
+      }
+      /* ./parser//parser_prod.nit:1841 */
+      ATTR_parser_nodes___AMethPropdef____n_kwredef(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:1843 */
+      ATTR_parser_nodes___AMethPropdef____n_kwredef(fra.me.REG[0]) = NIT_NULL;
+    }
+    /* ./parser//parser_prod.nit:1845 */
+    goto label1;
+  }
+  /* ./parser//parser_prod.nit:1847 */
+  fra.me.REG[3] = ATTR_parser_nodes___AConcreteMethPropdef____n_block(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+      REGB0 = REGB1;
+    }
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:1848 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:1849 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 1849);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:1850 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_AExpr, ID_AExpr)) /*cast AExpr*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 1850);
+      }
+      /* ./parser//parser_prod.nit:1851 */
+      ATTR_parser_nodes___AConcreteMethPropdef____n_block(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:1853 */
+      ATTR_parser_nodes___AConcreteMethPropdef____n_block(fra.me.REG[0]) = NIT_NULL;
+    }
+    /* ./parser//parser_prod.nit:1855 */
+    goto label1;
+  }
+  label1: while(0);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser_prod___AMainMethPropdef___visit_all(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 1859;
+  fra.me.meth = LOCATE_parser_prod___AMainMethPropdef___visit_all;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:1861 */
+  fra.me.REG[2] = ATTR_parser_nodes___AMethPropdef____n_kwredef(fra.me.REG[0]);
+  REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:1862 */
+    fra.me.REG[2] = ATTR_parser_nodes___AMethPropdef____n_kwredef(fra.me.REG[0]);
+    REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      nit_abort("Cast failed", NULL, LOCATE_parser_prod, 1862);
+    }
+    CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  }
+  /* ./parser//parser_prod.nit:1864 */
+  fra.me.REG[2] = ATTR_parser_nodes___AConcreteMethPropdef____n_block(fra.me.REG[0]);
+  REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:1865 */
+    fra.me.REG[0] = ATTR_parser_nodes___AConcreteMethPropdef____n_block(fra.me.REG[0]);
+    REGB0 = TAG_Bool((fra.me.REG[0]!=NIT_NULL) && VAL_ISA(fra.me.REG[0], COLOR_AExpr, ID_AExpr)) /*cast AExpr*/;
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      nit_abort("Cast failed", NULL, LOCATE_parser_prod, 1865);
+    }
+    CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  }
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser_prod___ATypePropdef___empty_init(val_t p0, int* init_table){
+  int itpos51 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ATypePropdef].i;
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  if (init_table[itpos51]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 1870;
+  fra.me.meth = LOCATE_parser_prod___ATypePropdef___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos51] = 1;
+  return;
+}
+void parser_prod___ATypePropdef___init_atypepropdef(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4, val_t p5, val_t p6, int* init_table){
+  int itpos52 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ATypePropdef].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[6];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  if (init_table[itpos52]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 1872;
+  fra.me.meth = LOCATE_parser_prod___ATypePropdef___init_atypepropdef;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 7;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  fra.me.REG[3] = p3;
+  fra.me.REG[4] = p4;
+  fra.me.REG[5] = p5;
+  fra.me.REG[6] = p6;
+  /* ./parser//parser_prod.nit:1881 */
+  CALL_parser_prod___ATypePropdef___empty_init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  /* ./parser//parser_prod.nit:1882 */
+  ATTR_parser_nodes___APropdef____n_doc(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./parser//parser_prod.nit:1883 */
+  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:1884 */
+    REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+      nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 1884);
+    }
+    CALL_parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  }
+  /* ./parser//parser_prod.nit:1886 */
+  ATTR_parser_nodes___ATypePropdef____n_kwredef(fra.me.REG[0]) = fra.me.REG[2];
+  /* ./parser//parser_prod.nit:1887 */
+  REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:1888 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+      nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 1888);
+    }
+    CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+  }
+  /* ./parser//parser_prod.nit:1890 */
+  REGB0 = TAG_Bool(fra.me.REG[3]!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Cast failed", NULL, LOCATE_parser_prod, 1890);
+  }
+  ATTR_parser_nodes___ATypePropdef____n_visibility(fra.me.REG[0]) = fra.me.REG[3];
+  /* ./parser//parser_prod.nit:1891 */
+  REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+    nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 1891);
+  }
+  CALL_parser_prod___ANode___parent__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[0]);
+  /* ./parser//parser_prod.nit:1892 */
+  REGB0 = TAG_Bool(fra.me.REG[4]!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Cast failed", NULL, LOCATE_parser_prod, 1892);
+  }
+  ATTR_parser_nodes___ATypePropdef____n_kwtype(fra.me.REG[0]) = fra.me.REG[4];
+  /* ./parser//parser_prod.nit:1893 */
+  REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+    nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 1893);
+  }
+  CALL_parser_prod___ANode___parent__eq(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[0]);
+  /* ./parser//parser_prod.nit:1894 */
+  REGB0 = TAG_Bool(fra.me.REG[5]!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Cast failed", NULL, LOCATE_parser_prod, 1894);
+  }
+  ATTR_parser_nodes___ATypePropdef____n_id(fra.me.REG[0]) = fra.me.REG[5];
+  /* ./parser//parser_prod.nit:1895 */
+  REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+    nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 1895);
+  }
+  CALL_parser_prod___ANode___parent__eq(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[0]);
+  /* ./parser//parser_prod.nit:1896 */
+  REGB0 = TAG_Bool(fra.me.REG[6]!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Cast failed", NULL, LOCATE_parser_prod, 1896);
+  }
+  ATTR_parser_nodes___ATypePropdef____n_type(fra.me.REG[0]) = fra.me.REG[6];
+  /* ./parser//parser_prod.nit:1897 */
+  REGB0 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+    nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 1897);
+  }
+  CALL_parser_prod___ANode___parent__eq(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  init_table[itpos52] = 1;
+  return;
+}
+void parser_prod___ATypePropdef___replace_child(val_t p0, val_t p1, val_t p2){
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 1900;
+  fra.me.meth = LOCATE_parser_prod___ATypePropdef___replace_child;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  /* ./parser//parser_prod.nit:1902 */
+  fra.me.REG[3] = ATTR_parser_nodes___APropdef____n_doc(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+      REGB0 = REGB1;
+    }
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:1903 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:1904 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 1904);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:1905 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_ADoc, ID_ADoc)) /*cast ADoc*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 1905);
+      }
+      /* ./parser//parser_prod.nit:1906 */
+      ATTR_parser_nodes___APropdef____n_doc(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:1908 */
+      ATTR_parser_nodes___APropdef____n_doc(fra.me.REG[0]) = NIT_NULL;
+    }
+    /* ./parser//parser_prod.nit:1910 */
+    goto label1;
+  }
+  /* ./parser//parser_prod.nit:1912 */
+  fra.me.REG[3] = ATTR_parser_nodes___ATypePropdef____n_kwredef(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+      REGB0 = REGB1;
+    }
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:1913 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:1914 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 1914);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:1915 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 1915);
+      }
+      /* ./parser//parser_prod.nit:1916 */
+      ATTR_parser_nodes___ATypePropdef____n_kwredef(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:1918 */
+      ATTR_parser_nodes___ATypePropdef____n_kwredef(fra.me.REG[0]) = NIT_NULL;
+    }
+    /* ./parser//parser_prod.nit:1920 */
+    goto label1;
+  }
+  /* ./parser//parser_prod.nit:1922 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ATypePropdef____n_visibility(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_visibility", LOCATE_parser_prod, 1922);
+  }
+  fra.me.REG[3] = ATTR_parser_nodes___ATypePropdef____n_visibility(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+    REGB0 = REGB1;
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:1923 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:1924 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 1924);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:1925 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_AVisibility, ID_AVisibility)) /*cast AVisibility*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 1925);
+      }
+      /* ./parser//parser_prod.nit:1926 */
+      ATTR_parser_nodes___ATypePropdef____n_visibility(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:1928 */
+      nit_abort("Aborted", NULL, LOCATE_parser_prod, 1928);
+    }
+    /* ./parser//parser_prod.nit:1930 */
+    goto label1;
+  }
+  /* ./parser//parser_prod.nit:1932 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ATypePropdef____n_kwtype(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_kwtype", LOCATE_parser_prod, 1932);
+  }
+  fra.me.REG[3] = ATTR_parser_nodes___ATypePropdef____n_kwtype(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+    REGB0 = REGB1;
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:1933 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:1934 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 1934);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:1935 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_TKwtype, ID_TKwtype)) /*cast TKwtype*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 1935);
+      }
+      /* ./parser//parser_prod.nit:1936 */
+      ATTR_parser_nodes___ATypePropdef____n_kwtype(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:1938 */
+      nit_abort("Aborted", NULL, LOCATE_parser_prod, 1938);
+    }
+    /* ./parser//parser_prod.nit:1940 */
+    goto label1;
+  }
+  /* ./parser//parser_prod.nit:1942 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ATypePropdef____n_id(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_id", LOCATE_parser_prod, 1942);
+  }
+  fra.me.REG[3] = ATTR_parser_nodes___ATypePropdef____n_id(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+    REGB0 = REGB1;
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:1943 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:1944 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 1944);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:1945 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_TClassid, ID_TClassid)) /*cast TClassid*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 1945);
+      }
+      /* ./parser//parser_prod.nit:1946 */
+      ATTR_parser_nodes___ATypePropdef____n_id(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:1948 */
+      nit_abort("Aborted", NULL, LOCATE_parser_prod, 1948);
+    }
+    /* ./parser//parser_prod.nit:1950 */
+    goto label1;
+  }
+  /* ./parser//parser_prod.nit:1952 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ATypePropdef____n_type(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_type", LOCATE_parser_prod, 1952);
+  }
+  fra.me.REG[3] = ATTR_parser_nodes___ATypePropdef____n_type(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+    REGB0 = REGB1;
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:1953 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:1954 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 1954);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:1955 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_AType, ID_AType)) /*cast AType*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 1955);
+      }
+      /* ./parser//parser_prod.nit:1956 */
+      ATTR_parser_nodes___ATypePropdef____n_type(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:1958 */
+      nit_abort("Aborted", NULL, LOCATE_parser_prod, 1958);
+    }
+    /* ./parser//parser_prod.nit:1960 */
+    goto label1;
+  }
+  label1: while(0);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser_prod___ATypePropdef___visit_all(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 1964;
+  fra.me.meth = LOCATE_parser_prod___ATypePropdef___visit_all;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:1966 */
+  fra.me.REG[2] = ATTR_parser_nodes___APropdef____n_doc(fra.me.REG[0]);
+  REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:1967 */
+    fra.me.REG[2] = ATTR_parser_nodes___APropdef____n_doc(fra.me.REG[0]);
+    REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_ADoc, ID_ADoc)) /*cast ADoc*/;
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      nit_abort("Cast failed", NULL, LOCATE_parser_prod, 1967);
+    }
+    CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  }
+  /* ./parser//parser_prod.nit:1969 */
+  fra.me.REG[2] = ATTR_parser_nodes___ATypePropdef____n_kwredef(fra.me.REG[0]);
+  REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:1970 */
+    fra.me.REG[2] = ATTR_parser_nodes___ATypePropdef____n_kwredef(fra.me.REG[0]);
+    REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      nit_abort("Cast failed", NULL, LOCATE_parser_prod, 1970);
+    }
+    CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  }
+  /* ./parser//parser_prod.nit:1972 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ATypePropdef____n_visibility(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_visibility", LOCATE_parser_prod, 1972);
+  }
+  fra.me.REG[2] = ATTR_parser_nodes___ATypePropdef____n_visibility(fra.me.REG[0]);
+  CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser_prod.nit:1973 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ATypePropdef____n_kwtype(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_kwtype", LOCATE_parser_prod, 1973);
+  }
+  fra.me.REG[2] = ATTR_parser_nodes___ATypePropdef____n_kwtype(fra.me.REG[0]);
+  CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser_prod.nit:1974 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ATypePropdef____n_id(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_id", LOCATE_parser_prod, 1974);
+  }
+  fra.me.REG[2] = ATTR_parser_nodes___ATypePropdef____n_id(fra.me.REG[0]);
+  CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser_prod.nit:1975 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ATypePropdef____n_type(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_type", LOCATE_parser_prod, 1975);
+  }
+  fra.me.REG[0] = ATTR_parser_nodes___ATypePropdef____n_type(fra.me.REG[0]);
+  CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser_prod___AReadAble___empty_init(val_t p0, int* init_table){
+  int itpos53 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_AReadAble].i;
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  if (init_table[itpos53]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 1979;
+  fra.me.meth = LOCATE_parser_prod___AReadAble___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos53] = 1;
+  return;
+}
+void parser_prod___AReadAble___init_areadable(val_t p0, val_t p1, val_t p2, int* init_table){
+  int itpos54 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_AReadAble].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  if (init_table[itpos54]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 1981;
+  fra.me.meth = LOCATE_parser_prod___AReadAble___init_areadable;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  /* ./parser//parser_prod.nit:1986 */
+  CALL_parser_prod___AReadAble___empty_init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  /* ./parser//parser_prod.nit:1987 */
+  ATTR_parser_nodes___AAble____n_kwredef(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./parser//parser_prod.nit:1988 */
+  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:1989 */
+    REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+      nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 1989);
+    }
+    CALL_parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  }
+  /* ./parser//parser_prod.nit:1991 */
+  REGB0 = TAG_Bool(fra.me.REG[2]!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Cast failed", NULL, LOCATE_parser_prod, 1991);
+  }
+  ATTR_parser_nodes___AReadAble____n_kwreadable(fra.me.REG[0]) = fra.me.REG[2];
+  /* ./parser//parser_prod.nit:1992 */
+  REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+    nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 1992);
+  }
+  CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  init_table[itpos54] = 1;
+  return;
+}
+void parser_prod___AReadAble___replace_child(val_t p0, val_t p1, val_t p2){
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 1995;
+  fra.me.meth = LOCATE_parser_prod___AReadAble___replace_child;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  /* ./parser//parser_prod.nit:1997 */
+  fra.me.REG[3] = ATTR_parser_nodes___AAble____n_kwredef(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+      REGB0 = REGB1;
+    }
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:1998 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:1999 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 1999);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:2000 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 2000);
+      }
+      /* ./parser//parser_prod.nit:2001 */
+      ATTR_parser_nodes___AAble____n_kwredef(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:2003 */
+      ATTR_parser_nodes___AAble____n_kwredef(fra.me.REG[0]) = NIT_NULL;
+    }
+    /* ./parser//parser_prod.nit:2005 */
+    goto label1;
+  }
+  /* ./parser//parser_prod.nit:2007 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AReadAble____n_kwreadable(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_kwreadable", LOCATE_parser_prod, 2007);
+  }
+  fra.me.REG[3] = ATTR_parser_nodes___AReadAble____n_kwreadable(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+    REGB0 = REGB1;
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:2008 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:2009 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 2009);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:2010 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_TKwreadable, ID_TKwreadable)) /*cast TKwreadable*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 2010);
+      }
+      /* ./parser//parser_prod.nit:2011 */
+      ATTR_parser_nodes___AReadAble____n_kwreadable(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:2013 */
+      nit_abort("Aborted", NULL, LOCATE_parser_prod, 2013);
+    }
+    /* ./parser//parser_prod.nit:2015 */
+    goto label1;
+  }
+  label1: while(0);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser_prod___AReadAble___visit_all(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 2019;
+  fra.me.meth = LOCATE_parser_prod___AReadAble___visit_all;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:2021 */
+  fra.me.REG[2] = ATTR_parser_nodes___AAble____n_kwredef(fra.me.REG[0]);
+  REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:2022 */
+    fra.me.REG[2] = ATTR_parser_nodes___AAble____n_kwredef(fra.me.REG[0]);
+    REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      nit_abort("Cast failed", NULL, LOCATE_parser_prod, 2022);
+    }
+    CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  }
+  /* ./parser//parser_prod.nit:2024 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AReadAble____n_kwreadable(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_kwreadable", LOCATE_parser_prod, 2024);
+  }
+  fra.me.REG[0] = ATTR_parser_nodes___AReadAble____n_kwreadable(fra.me.REG[0]);
+  CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser_prod___AWriteAble___empty_init(val_t p0, int* init_table){
+  int itpos55 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_AWriteAble].i;
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  if (init_table[itpos55]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 2028;
+  fra.me.meth = LOCATE_parser_prod___AWriteAble___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos55] = 1;
+  return;
+}
+void parser_prod___AWriteAble___init_awriteable(val_t p0, val_t p1, val_t p2, val_t p3, int* init_table){
+  int itpos56 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_AWriteAble].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  if (init_table[itpos56]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 2030;
+  fra.me.meth = LOCATE_parser_prod___AWriteAble___init_awriteable;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  fra.me.REG[3] = p3;
+  /* ./parser//parser_prod.nit:2036 */
+  CALL_parser_prod___AWriteAble___empty_init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  /* ./parser//parser_prod.nit:2037 */
+  ATTR_parser_nodes___AAble____n_kwredef(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./parser//parser_prod.nit:2038 */
+  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:2039 */
+    REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+      nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 2039);
+    }
+    CALL_parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  }
+  /* ./parser//parser_prod.nit:2041 */
+  ATTR_parser_nodes___AAble____n_visibility(fra.me.REG[0]) = fra.me.REG[2];
+  /* ./parser//parser_prod.nit:2042 */
+  REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:2043 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+      nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 2043);
+    }
+    CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+  }
+  /* ./parser//parser_prod.nit:2045 */
+  REGB0 = TAG_Bool(fra.me.REG[3]!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Cast failed", NULL, LOCATE_parser_prod, 2045);
+  }
+  ATTR_parser_nodes___AWriteAble____n_kwwritable(fra.me.REG[0]) = fra.me.REG[3];
+  /* ./parser//parser_prod.nit:2046 */
+  REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+    nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 2046);
+  }
+  CALL_parser_prod___ANode___parent__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  init_table[itpos56] = 1;
+  return;
+}
+void parser_prod___AWriteAble___replace_child(val_t p0, val_t p1, val_t p2){
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 2049;
+  fra.me.meth = LOCATE_parser_prod___AWriteAble___replace_child;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  /* ./parser//parser_prod.nit:2051 */
+  fra.me.REG[3] = ATTR_parser_nodes___AAble____n_kwredef(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+      REGB0 = REGB1;
+    }
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:2052 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:2053 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 2053);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:2054 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 2054);
+      }
+      /* ./parser//parser_prod.nit:2055 */
+      ATTR_parser_nodes___AAble____n_kwredef(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:2057 */
+      ATTR_parser_nodes___AAble____n_kwredef(fra.me.REG[0]) = NIT_NULL;
+    }
+    /* ./parser//parser_prod.nit:2059 */
+    goto label1;
+  }
+  /* ./parser//parser_prod.nit:2061 */
+  fra.me.REG[3] = ATTR_parser_nodes___AAble____n_visibility(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+      REGB0 = REGB1;
+    }
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:2062 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:2063 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 2063);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:2064 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_AVisibility, ID_AVisibility)) /*cast AVisibility*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 2064);
+      }
+      /* ./parser//parser_prod.nit:2065 */
+      ATTR_parser_nodes___AAble____n_visibility(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:2067 */
+      ATTR_parser_nodes___AAble____n_visibility(fra.me.REG[0]) = NIT_NULL;
+    }
+    /* ./parser//parser_prod.nit:2069 */
+    goto label1;
+  }
+  /* ./parser//parser_prod.nit:2071 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AWriteAble____n_kwwritable(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_kwwritable", LOCATE_parser_prod, 2071);
+  }
+  fra.me.REG[3] = ATTR_parser_nodes___AWriteAble____n_kwwritable(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+    REGB0 = REGB1;
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:2072 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:2073 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 2073);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:2074 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_TKwwritable, ID_TKwwritable)) /*cast TKwwritable*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 2074);
+      }
+      /* ./parser//parser_prod.nit:2075 */
+      ATTR_parser_nodes___AWriteAble____n_kwwritable(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:2077 */
+      nit_abort("Aborted", NULL, LOCATE_parser_prod, 2077);
+    }
+    /* ./parser//parser_prod.nit:2079 */
+    goto label1;
+  }
+  label1: while(0);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser_prod___AWriteAble___visit_all(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 2083;
+  fra.me.meth = LOCATE_parser_prod___AWriteAble___visit_all;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:2085 */
+  fra.me.REG[2] = ATTR_parser_nodes___AAble____n_kwredef(fra.me.REG[0]);
+  REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:2086 */
+    fra.me.REG[2] = ATTR_parser_nodes___AAble____n_kwredef(fra.me.REG[0]);
+    REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      nit_abort("Cast failed", NULL, LOCATE_parser_prod, 2086);
+    }
+    CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  }
+  /* ./parser//parser_prod.nit:2088 */
+  fra.me.REG[2] = ATTR_parser_nodes___AAble____n_visibility(fra.me.REG[0]);
+  REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:2089 */
+    fra.me.REG[2] = ATTR_parser_nodes___AAble____n_visibility(fra.me.REG[0]);
+    REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_AVisibility, ID_AVisibility)) /*cast AVisibility*/;
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      nit_abort("Cast failed", NULL, LOCATE_parser_prod, 2089);
+    }
+    CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  }
+  /* ./parser//parser_prod.nit:2091 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AWriteAble____n_kwwritable(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_kwwritable", LOCATE_parser_prod, 2091);
+  }
+  fra.me.REG[0] = ATTR_parser_nodes___AWriteAble____n_kwwritable(fra.me.REG[0]);
+  CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser_prod___AIdMethid___empty_init(val_t p0, int* init_table){
+  int itpos57 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_AIdMethid].i;
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  if (init_table[itpos57]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 2095;
+  fra.me.meth = LOCATE_parser_prod___AIdMethid___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos57] = 1;
+  return;
+}
+void parser_prod___AIdMethid___init_aidmethid(val_t p0, val_t p1, int* init_table){
+  int itpos58 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_AIdMethid].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos58]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 2097;
+  fra.me.meth = LOCATE_parser_prod___AIdMethid___init_aidmethid;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:2101 */
+  CALL_parser_prod___AIdMethid___empty_init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  /* ./parser//parser_prod.nit:2102 */
+  REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Cast failed", NULL, LOCATE_parser_prod, 2102);
+  }
+  ATTR_parser_nodes___AIdMethid____n_id(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./parser//parser_prod.nit:2103 */
+  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+    nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 2103);
+  }
+  CALL_parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  init_table[itpos58] = 1;
+  return;
+}
+void parser_prod___AIdMethid___replace_child(val_t p0, val_t p1, val_t p2){
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 2106;
+  fra.me.meth = LOCATE_parser_prod___AIdMethid___replace_child;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  /* ./parser//parser_prod.nit:2108 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AIdMethid____n_id(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_id", LOCATE_parser_prod, 2108);
+  }
+  fra.me.REG[3] = ATTR_parser_nodes___AIdMethid____n_id(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+    REGB0 = REGB1;
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:2109 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:2110 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 2110);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:2111 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_TId, ID_TId)) /*cast TId*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 2111);
+      }
+      /* ./parser//parser_prod.nit:2112 */
+      ATTR_parser_nodes___AIdMethid____n_id(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:2114 */
+      nit_abort("Aborted", NULL, LOCATE_parser_prod, 2114);
+    }
+    /* ./parser//parser_prod.nit:2116 */
+    goto label1;
+  }
+  label1: while(0);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser_prod___AIdMethid___visit_all(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 2120;
+  fra.me.meth = LOCATE_parser_prod___AIdMethid___visit_all;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:2122 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AIdMethid____n_id(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_id", LOCATE_parser_prod, 2122);
+  }
+  fra.me.REG[0] = ATTR_parser_nodes___AIdMethid____n_id(fra.me.REG[0]);
+  CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser_prod___APlusMethid___empty_init(val_t p0, int* init_table){
+  int itpos59 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_APlusMethid].i;
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  if (init_table[itpos59]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 2126;
+  fra.me.meth = LOCATE_parser_prod___APlusMethid___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos59] = 1;
+  return;
+}
+void parser_prod___APlusMethid___init_aplusmethid(val_t p0, val_t p1, int* init_table){
+  int itpos60 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_APlusMethid].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos60]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 2128;
+  fra.me.meth = LOCATE_parser_prod___APlusMethid___init_aplusmethid;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:2132 */
+  CALL_parser_prod___APlusMethid___empty_init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  /* ./parser//parser_prod.nit:2133 */
+  REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Cast failed", NULL, LOCATE_parser_prod, 2133);
+  }
+  ATTR_parser_nodes___APlusMethid____n_plus(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./parser//parser_prod.nit:2134 */
+  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+    nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 2134);
+  }
+  CALL_parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  init_table[itpos60] = 1;
+  return;
+}
+void parser_prod___APlusMethid___replace_child(val_t p0, val_t p1, val_t p2){
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 2137;
+  fra.me.meth = LOCATE_parser_prod___APlusMethid___replace_child;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  /* ./parser//parser_prod.nit:2139 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___APlusMethid____n_plus(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_plus", LOCATE_parser_prod, 2139);
+  }
+  fra.me.REG[3] = ATTR_parser_nodes___APlusMethid____n_plus(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+    REGB0 = REGB1;
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:2140 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:2141 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 2141);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:2142 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_TPlus, ID_TPlus)) /*cast TPlus*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 2142);
+      }
+      /* ./parser//parser_prod.nit:2143 */
+      ATTR_parser_nodes___APlusMethid____n_plus(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:2145 */
+      nit_abort("Aborted", NULL, LOCATE_parser_prod, 2145);
+    }
+    /* ./parser//parser_prod.nit:2147 */
+    goto label1;
+  }
+  label1: while(0);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser_prod___APlusMethid___visit_all(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 2151;
+  fra.me.meth = LOCATE_parser_prod___APlusMethid___visit_all;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:2153 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___APlusMethid____n_plus(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_plus", LOCATE_parser_prod, 2153);
+  }
+  fra.me.REG[0] = ATTR_parser_nodes___APlusMethid____n_plus(fra.me.REG[0]);
+  CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser_prod___AMinusMethid___empty_init(val_t p0, int* init_table){
+  int itpos61 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_AMinusMethid].i;
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  if (init_table[itpos61]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 2157;
+  fra.me.meth = LOCATE_parser_prod___AMinusMethid___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos61] = 1;
+  return;
+}
+void parser_prod___AMinusMethid___init_aminusmethid(val_t p0, val_t p1, int* init_table){
+  int itpos62 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_AMinusMethid].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos62]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 2159;
+  fra.me.meth = LOCATE_parser_prod___AMinusMethid___init_aminusmethid;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:2163 */
+  CALL_parser_prod___AMinusMethid___empty_init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  /* ./parser//parser_prod.nit:2164 */
+  REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Cast failed", NULL, LOCATE_parser_prod, 2164);
+  }
+  ATTR_parser_nodes___AMinusMethid____n_minus(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./parser//parser_prod.nit:2165 */
+  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+    nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 2165);
+  }
+  CALL_parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  init_table[itpos62] = 1;
+  return;
+}
+void parser_prod___AMinusMethid___replace_child(val_t p0, val_t p1, val_t p2){
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 2168;
+  fra.me.meth = LOCATE_parser_prod___AMinusMethid___replace_child;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  /* ./parser//parser_prod.nit:2170 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AMinusMethid____n_minus(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_minus", LOCATE_parser_prod, 2170);
+  }
+  fra.me.REG[3] = ATTR_parser_nodes___AMinusMethid____n_minus(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+    REGB0 = REGB1;
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:2171 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:2172 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 2172);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:2173 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_TMinus, ID_TMinus)) /*cast TMinus*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 2173);
+      }
+      /* ./parser//parser_prod.nit:2174 */
+      ATTR_parser_nodes___AMinusMethid____n_minus(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:2176 */
+      nit_abort("Aborted", NULL, LOCATE_parser_prod, 2176);
+    }
+    /* ./parser//parser_prod.nit:2178 */
+    goto label1;
+  }
+  label1: while(0);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser_prod___AMinusMethid___visit_all(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 2182;
+  fra.me.meth = LOCATE_parser_prod___AMinusMethid___visit_all;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:2184 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AMinusMethid____n_minus(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_minus", LOCATE_parser_prod, 2184);
+  }
+  fra.me.REG[0] = ATTR_parser_nodes___AMinusMethid____n_minus(fra.me.REG[0]);
+  CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser_prod___AStarMethid___empty_init(val_t p0, int* init_table){
+  int itpos63 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_AStarMethid].i;
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  if (init_table[itpos63]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 2188;
+  fra.me.meth = LOCATE_parser_prod___AStarMethid___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos63] = 1;
+  return;
+}
+void parser_prod___AStarMethid___init_astarmethid(val_t p0, val_t p1, int* init_table){
+  int itpos64 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_AStarMethid].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos64]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 2190;
+  fra.me.meth = LOCATE_parser_prod___AStarMethid___init_astarmethid;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:2194 */
+  CALL_parser_prod___AStarMethid___empty_init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  /* ./parser//parser_prod.nit:2195 */
+  REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Cast failed", NULL, LOCATE_parser_prod, 2195);
+  }
+  ATTR_parser_nodes___AStarMethid____n_star(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./parser//parser_prod.nit:2196 */
+  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+    nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 2196);
+  }
+  CALL_parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  init_table[itpos64] = 1;
+  return;
+}
+void parser_prod___AStarMethid___replace_child(val_t p0, val_t p1, val_t p2){
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 2199;
+  fra.me.meth = LOCATE_parser_prod___AStarMethid___replace_child;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  /* ./parser//parser_prod.nit:2201 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AStarMethid____n_star(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_star", LOCATE_parser_prod, 2201);
+  }
+  fra.me.REG[3] = ATTR_parser_nodes___AStarMethid____n_star(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+    REGB0 = REGB1;
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:2202 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:2203 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 2203);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:2204 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_TStar, ID_TStar)) /*cast TStar*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 2204);
+      }
+      /* ./parser//parser_prod.nit:2205 */
+      ATTR_parser_nodes___AStarMethid____n_star(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:2207 */
+      nit_abort("Aborted", NULL, LOCATE_parser_prod, 2207);
+    }
+    /* ./parser//parser_prod.nit:2209 */
+    goto label1;
+  }
+  label1: while(0);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser_prod___AStarMethid___visit_all(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 2213;
+  fra.me.meth = LOCATE_parser_prod___AStarMethid___visit_all;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:2215 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AStarMethid____n_star(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_star", LOCATE_parser_prod, 2215);
+  }
+  fra.me.REG[0] = ATTR_parser_nodes___AStarMethid____n_star(fra.me.REG[0]);
+  CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser_prod___ASlashMethid___empty_init(val_t p0, int* init_table){
+  int itpos65 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ASlashMethid].i;
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  if (init_table[itpos65]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 2219;
+  fra.me.meth = LOCATE_parser_prod___ASlashMethid___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos65] = 1;
+  return;
+}
+void parser_prod___ASlashMethid___init_aslashmethid(val_t p0, val_t p1, int* init_table){
+  int itpos66 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ASlashMethid].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos66]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 2221;
+  fra.me.meth = LOCATE_parser_prod___ASlashMethid___init_aslashmethid;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:2225 */
+  CALL_parser_prod___ASlashMethid___empty_init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  /* ./parser//parser_prod.nit:2226 */
+  REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Cast failed", NULL, LOCATE_parser_prod, 2226);
+  }
+  ATTR_parser_nodes___ASlashMethid____n_slash(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./parser//parser_prod.nit:2227 */
+  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+    nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 2227);
+  }
+  CALL_parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  init_table[itpos66] = 1;
+  return;
+}
+void parser_prod___ASlashMethid___replace_child(val_t p0, val_t p1, val_t p2){
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 2230;
+  fra.me.meth = LOCATE_parser_prod___ASlashMethid___replace_child;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  /* ./parser//parser_prod.nit:2232 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ASlashMethid____n_slash(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_slash", LOCATE_parser_prod, 2232);
+  }
+  fra.me.REG[3] = ATTR_parser_nodes___ASlashMethid____n_slash(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+    REGB0 = REGB1;
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:2233 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:2234 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 2234);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:2235 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_TSlash, ID_TSlash)) /*cast TSlash*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 2235);
+      }
+      /* ./parser//parser_prod.nit:2236 */
+      ATTR_parser_nodes___ASlashMethid____n_slash(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:2238 */
+      nit_abort("Aborted", NULL, LOCATE_parser_prod, 2238);
+    }
+    /* ./parser//parser_prod.nit:2240 */
+    goto label1;
+  }
+  label1: while(0);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser_prod___ASlashMethid___visit_all(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 2244;
+  fra.me.meth = LOCATE_parser_prod___ASlashMethid___visit_all;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:2246 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ASlashMethid____n_slash(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_slash", LOCATE_parser_prod, 2246);
+  }
+  fra.me.REG[0] = ATTR_parser_nodes___ASlashMethid____n_slash(fra.me.REG[0]);
+  CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser_prod___APercentMethid___empty_init(val_t p0, int* init_table){
+  int itpos67 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_APercentMethid].i;
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  if (init_table[itpos67]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 2250;
+  fra.me.meth = LOCATE_parser_prod___APercentMethid___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos67] = 1;
+  return;
+}
+void parser_prod___APercentMethid___init_apercentmethid(val_t p0, val_t p1, int* init_table){
+  int itpos68 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_APercentMethid].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos68]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 2252;
+  fra.me.meth = LOCATE_parser_prod___APercentMethid___init_apercentmethid;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:2256 */
+  CALL_parser_prod___APercentMethid___empty_init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  /* ./parser//parser_prod.nit:2257 */
+  REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Cast failed", NULL, LOCATE_parser_prod, 2257);
+  }
+  ATTR_parser_nodes___APercentMethid____n_percent(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./parser//parser_prod.nit:2258 */
+  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+    nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 2258);
+  }
+  CALL_parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  init_table[itpos68] = 1;
+  return;
+}
+void parser_prod___APercentMethid___replace_child(val_t p0, val_t p1, val_t p2){
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 2261;
+  fra.me.meth = LOCATE_parser_prod___APercentMethid___replace_child;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  /* ./parser//parser_prod.nit:2263 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___APercentMethid____n_percent(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_percent", LOCATE_parser_prod, 2263);
+  }
+  fra.me.REG[3] = ATTR_parser_nodes___APercentMethid____n_percent(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+    REGB0 = REGB1;
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:2264 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:2265 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 2265);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:2266 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_TPercent, ID_TPercent)) /*cast TPercent*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 2266);
+      }
+      /* ./parser//parser_prod.nit:2267 */
+      ATTR_parser_nodes___APercentMethid____n_percent(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:2269 */
+      nit_abort("Aborted", NULL, LOCATE_parser_prod, 2269);
+    }
+    /* ./parser//parser_prod.nit:2271 */
+    goto label1;
+  }
+  label1: while(0);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser_prod___APercentMethid___visit_all(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 2275;
+  fra.me.meth = LOCATE_parser_prod___APercentMethid___visit_all;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:2277 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___APercentMethid____n_percent(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_percent", LOCATE_parser_prod, 2277);
+  }
+  fra.me.REG[0] = ATTR_parser_nodes___APercentMethid____n_percent(fra.me.REG[0]);
+  CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser_prod___AEqMethid___empty_init(val_t p0, int* init_table){
+  int itpos69 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_AEqMethid].i;
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  if (init_table[itpos69]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 2281;
+  fra.me.meth = LOCATE_parser_prod___AEqMethid___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos69] = 1;
+  return;
+}
+void parser_prod___AEqMethid___init_aeqmethid(val_t p0, val_t p1, int* init_table){
+  int itpos70 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_AEqMethid].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos70]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 2283;
+  fra.me.meth = LOCATE_parser_prod___AEqMethid___init_aeqmethid;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:2287 */
+  CALL_parser_prod___AEqMethid___empty_init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  /* ./parser//parser_prod.nit:2288 */
+  REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Cast failed", NULL, LOCATE_parser_prod, 2288);
+  }
+  ATTR_parser_nodes___AEqMethid____n_eq(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./parser//parser_prod.nit:2289 */
+  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+    nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 2289);
+  }
+  CALL_parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  init_table[itpos70] = 1;
+  return;
+}
+void parser_prod___AEqMethid___replace_child(val_t p0, val_t p1, val_t p2){
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 2292;
+  fra.me.meth = LOCATE_parser_prod___AEqMethid___replace_child;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  /* ./parser//parser_prod.nit:2294 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AEqMethid____n_eq(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_eq", LOCATE_parser_prod, 2294);
+  }
+  fra.me.REG[3] = ATTR_parser_nodes___AEqMethid____n_eq(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+    REGB0 = REGB1;
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:2295 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:2296 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 2296);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:2297 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_TEq, ID_TEq)) /*cast TEq*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 2297);
+      }
+      /* ./parser//parser_prod.nit:2298 */
+      ATTR_parser_nodes___AEqMethid____n_eq(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:2300 */
+      nit_abort("Aborted", NULL, LOCATE_parser_prod, 2300);
+    }
+    /* ./parser//parser_prod.nit:2302 */
+    goto label1;
+  }
+  label1: while(0);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser_prod___AEqMethid___visit_all(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 2306;
+  fra.me.meth = LOCATE_parser_prod___AEqMethid___visit_all;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:2308 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AEqMethid____n_eq(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_eq", LOCATE_parser_prod, 2308);
+  }
+  fra.me.REG[0] = ATTR_parser_nodes___AEqMethid____n_eq(fra.me.REG[0]);
+  CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser_prod___ANeMethid___empty_init(val_t p0, int* init_table){
+  int itpos71 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ANeMethid].i;
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  if (init_table[itpos71]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 2312;
+  fra.me.meth = LOCATE_parser_prod___ANeMethid___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos71] = 1;
+  return;
+}
+void parser_prod___ANeMethid___init_anemethid(val_t p0, val_t p1, int* init_table){
+  int itpos72 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ANeMethid].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos72]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 2314;
+  fra.me.meth = LOCATE_parser_prod___ANeMethid___init_anemethid;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:2318 */
+  CALL_parser_prod___ANeMethid___empty_init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  /* ./parser//parser_prod.nit:2319 */
+  REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Cast failed", NULL, LOCATE_parser_prod, 2319);
+  }
+  ATTR_parser_nodes___ANeMethid____n_ne(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./parser//parser_prod.nit:2320 */
+  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+    nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 2320);
+  }
+  CALL_parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  init_table[itpos72] = 1;
+  return;
+}
+void parser_prod___ANeMethid___replace_child(val_t p0, val_t p1, val_t p2){
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 2323;
+  fra.me.meth = LOCATE_parser_prod___ANeMethid___replace_child;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  /* ./parser//parser_prod.nit:2325 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ANeMethid____n_ne(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_ne", LOCATE_parser_prod, 2325);
+  }
+  fra.me.REG[3] = ATTR_parser_nodes___ANeMethid____n_ne(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+    REGB0 = REGB1;
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:2326 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:2327 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 2327);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:2328 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_TNe, ID_TNe)) /*cast TNe*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 2328);
+      }
+      /* ./parser//parser_prod.nit:2329 */
+      ATTR_parser_nodes___ANeMethid____n_ne(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:2331 */
+      nit_abort("Aborted", NULL, LOCATE_parser_prod, 2331);
+    }
+    /* ./parser//parser_prod.nit:2333 */
+    goto label1;
+  }
+  label1: while(0);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser_prod___ANeMethid___visit_all(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 2337;
+  fra.me.meth = LOCATE_parser_prod___ANeMethid___visit_all;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:2339 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ANeMethid____n_ne(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_ne", LOCATE_parser_prod, 2339);
+  }
+  fra.me.REG[0] = ATTR_parser_nodes___ANeMethid____n_ne(fra.me.REG[0]);
+  CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser_prod___ALeMethid___empty_init(val_t p0, int* init_table){
+  int itpos73 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ALeMethid].i;
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  if (init_table[itpos73]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 2343;
+  fra.me.meth = LOCATE_parser_prod___ALeMethid___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos73] = 1;
+  return;
+}
+void parser_prod___ALeMethid___init_alemethid(val_t p0, val_t p1, int* init_table){
+  int itpos74 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ALeMethid].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos74]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 2345;
+  fra.me.meth = LOCATE_parser_prod___ALeMethid___init_alemethid;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:2349 */
+  CALL_parser_prod___ALeMethid___empty_init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  /* ./parser//parser_prod.nit:2350 */
+  REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Cast failed", NULL, LOCATE_parser_prod, 2350);
+  }
+  ATTR_parser_nodes___ALeMethid____n_le(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./parser//parser_prod.nit:2351 */
+  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+    nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 2351);
+  }
+  CALL_parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  init_table[itpos74] = 1;
+  return;
+}
+void parser_prod___ALeMethid___replace_child(val_t p0, val_t p1, val_t p2){
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 2354;
+  fra.me.meth = LOCATE_parser_prod___ALeMethid___replace_child;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  /* ./parser//parser_prod.nit:2356 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ALeMethid____n_le(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_le", LOCATE_parser_prod, 2356);
+  }
+  fra.me.REG[3] = ATTR_parser_nodes___ALeMethid____n_le(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+    REGB0 = REGB1;
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:2357 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:2358 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 2358);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:2359 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_TLe, ID_TLe)) /*cast TLe*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 2359);
+      }
+      /* ./parser//parser_prod.nit:2360 */
+      ATTR_parser_nodes___ALeMethid____n_le(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:2362 */
+      nit_abort("Aborted", NULL, LOCATE_parser_prod, 2362);
+    }
+    /* ./parser//parser_prod.nit:2364 */
+    goto label1;
+  }
+  label1: while(0);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser_prod___ALeMethid___visit_all(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 2368;
+  fra.me.meth = LOCATE_parser_prod___ALeMethid___visit_all;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:2370 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ALeMethid____n_le(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_le", LOCATE_parser_prod, 2370);
+  }
+  fra.me.REG[0] = ATTR_parser_nodes___ALeMethid____n_le(fra.me.REG[0]);
+  CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser_prod___AGeMethid___empty_init(val_t p0, int* init_table){
+  int itpos75 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_AGeMethid].i;
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  if (init_table[itpos75]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 2374;
+  fra.me.meth = LOCATE_parser_prod___AGeMethid___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos75] = 1;
+  return;
+}
+void parser_prod___AGeMethid___init_agemethid(val_t p0, val_t p1, int* init_table){
+  int itpos76 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_AGeMethid].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos76]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 2376;
+  fra.me.meth = LOCATE_parser_prod___AGeMethid___init_agemethid;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:2380 */
+  CALL_parser_prod___AGeMethid___empty_init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  /* ./parser//parser_prod.nit:2381 */
+  REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Cast failed", NULL, LOCATE_parser_prod, 2381);
+  }
+  ATTR_parser_nodes___AGeMethid____n_ge(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./parser//parser_prod.nit:2382 */
+  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+    nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 2382);
+  }
+  CALL_parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  init_table[itpos76] = 1;
+  return;
+}
+void parser_prod___AGeMethid___replace_child(val_t p0, val_t p1, val_t p2){
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 2385;
+  fra.me.meth = LOCATE_parser_prod___AGeMethid___replace_child;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  /* ./parser//parser_prod.nit:2387 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AGeMethid____n_ge(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_ge", LOCATE_parser_prod, 2387);
+  }
+  fra.me.REG[3] = ATTR_parser_nodes___AGeMethid____n_ge(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+    REGB0 = REGB1;
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:2388 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:2389 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 2389);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:2390 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_TGe, ID_TGe)) /*cast TGe*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 2390);
+      }
+      /* ./parser//parser_prod.nit:2391 */
+      ATTR_parser_nodes___AGeMethid____n_ge(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:2393 */
+      nit_abort("Aborted", NULL, LOCATE_parser_prod, 2393);
+    }
+    /* ./parser//parser_prod.nit:2395 */
+    goto label1;
+  }
+  label1: while(0);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser_prod___AGeMethid___visit_all(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 2399;
+  fra.me.meth = LOCATE_parser_prod___AGeMethid___visit_all;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:2401 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AGeMethid____n_ge(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_ge", LOCATE_parser_prod, 2401);
+  }
+  fra.me.REG[0] = ATTR_parser_nodes___AGeMethid____n_ge(fra.me.REG[0]);
+  CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser_prod___ALtMethid___empty_init(val_t p0, int* init_table){
+  int itpos77 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ALtMethid].i;
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  if (init_table[itpos77]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 2405;
+  fra.me.meth = LOCATE_parser_prod___ALtMethid___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos77] = 1;
+  return;
+}
+void parser_prod___ALtMethid___init_altmethid(val_t p0, val_t p1, int* init_table){
+  int itpos78 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ALtMethid].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos78]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 2407;
+  fra.me.meth = LOCATE_parser_prod___ALtMethid___init_altmethid;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:2411 */
+  CALL_parser_prod___ALtMethid___empty_init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  /* ./parser//parser_prod.nit:2412 */
+  REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Cast failed", NULL, LOCATE_parser_prod, 2412);
+  }
+  ATTR_parser_nodes___ALtMethid____n_lt(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./parser//parser_prod.nit:2413 */
+  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+    nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 2413);
+  }
+  CALL_parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  init_table[itpos78] = 1;
+  return;
+}
+void parser_prod___ALtMethid___replace_child(val_t p0, val_t p1, val_t p2){
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 2416;
+  fra.me.meth = LOCATE_parser_prod___ALtMethid___replace_child;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  /* ./parser//parser_prod.nit:2418 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ALtMethid____n_lt(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_lt", LOCATE_parser_prod, 2418);
+  }
+  fra.me.REG[3] = ATTR_parser_nodes___ALtMethid____n_lt(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+    REGB0 = REGB1;
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:2419 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:2420 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 2420);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:2421 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_TLt, ID_TLt)) /*cast TLt*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 2421);
+      }
+      /* ./parser//parser_prod.nit:2422 */
+      ATTR_parser_nodes___ALtMethid____n_lt(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:2424 */
+      nit_abort("Aborted", NULL, LOCATE_parser_prod, 2424);
+    }
+    /* ./parser//parser_prod.nit:2426 */
+    goto label1;
+  }
+  label1: while(0);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser_prod___ALtMethid___visit_all(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 2430;
+  fra.me.meth = LOCATE_parser_prod___ALtMethid___visit_all;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:2432 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ALtMethid____n_lt(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_lt", LOCATE_parser_prod, 2432);
+  }
+  fra.me.REG[0] = ATTR_parser_nodes___ALtMethid____n_lt(fra.me.REG[0]);
+  CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser_prod___AGtMethid___empty_init(val_t p0, int* init_table){
+  int itpos79 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_AGtMethid].i;
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  if (init_table[itpos79]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 2436;
+  fra.me.meth = LOCATE_parser_prod___AGtMethid___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos79] = 1;
+  return;
+}
+void parser_prod___AGtMethid___init_agtmethid(val_t p0, val_t p1, int* init_table){
+  int itpos80 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_AGtMethid].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos80]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 2438;
+  fra.me.meth = LOCATE_parser_prod___AGtMethid___init_agtmethid;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:2442 */
+  CALL_parser_prod___AGtMethid___empty_init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  /* ./parser//parser_prod.nit:2443 */
+  REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Cast failed", NULL, LOCATE_parser_prod, 2443);
+  }
+  ATTR_parser_nodes___AGtMethid____n_gt(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./parser//parser_prod.nit:2444 */
+  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+    nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 2444);
+  }
+  CALL_parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  init_table[itpos80] = 1;
+  return;
+}
+void parser_prod___AGtMethid___replace_child(val_t p0, val_t p1, val_t p2){
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 2447;
+  fra.me.meth = LOCATE_parser_prod___AGtMethid___replace_child;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  /* ./parser//parser_prod.nit:2449 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AGtMethid____n_gt(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_gt", LOCATE_parser_prod, 2449);
+  }
+  fra.me.REG[3] = ATTR_parser_nodes___AGtMethid____n_gt(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+    REGB0 = REGB1;
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:2450 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:2451 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 2451);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:2452 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_TGt, ID_TGt)) /*cast TGt*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 2452);
+      }
+      /* ./parser//parser_prod.nit:2453 */
+      ATTR_parser_nodes___AGtMethid____n_gt(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:2455 */
+      nit_abort("Aborted", NULL, LOCATE_parser_prod, 2455);
+    }
+    /* ./parser//parser_prod.nit:2457 */
+    goto label1;
+  }
+  label1: while(0);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser_prod___AGtMethid___visit_all(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 2461;
+  fra.me.meth = LOCATE_parser_prod___AGtMethid___visit_all;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:2463 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AGtMethid____n_gt(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_gt", LOCATE_parser_prod, 2463);
+  }
+  fra.me.REG[0] = ATTR_parser_nodes___AGtMethid____n_gt(fra.me.REG[0]);
+  CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser_prod___ALlMethid___empty_init(val_t p0, int* init_table){
+  int itpos81 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ALlMethid].i;
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  if (init_table[itpos81]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 2467;
+  fra.me.meth = LOCATE_parser_prod___ALlMethid___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos81] = 1;
+  return;
+}
+void parser_prod___ALlMethid___init_allmethid(val_t p0, val_t p1, int* init_table){
+  int itpos82 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ALlMethid].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos82]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 2469;
+  fra.me.meth = LOCATE_parser_prod___ALlMethid___init_allmethid;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:2473 */
+  CALL_parser_prod___ALlMethid___empty_init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  /* ./parser//parser_prod.nit:2474 */
+  REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Cast failed", NULL, LOCATE_parser_prod, 2474);
+  }
+  ATTR_parser_nodes___ALlMethid____n_ll(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./parser//parser_prod.nit:2475 */
+  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+    nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 2475);
+  }
+  CALL_parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  init_table[itpos82] = 1;
+  return;
+}
+void parser_prod___ALlMethid___replace_child(val_t p0, val_t p1, val_t p2){
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 2478;
+  fra.me.meth = LOCATE_parser_prod___ALlMethid___replace_child;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  /* ./parser//parser_prod.nit:2480 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ALlMethid____n_ll(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_ll", LOCATE_parser_prod, 2480);
+  }
+  fra.me.REG[3] = ATTR_parser_nodes___ALlMethid____n_ll(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+    REGB0 = REGB1;
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:2481 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:2482 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 2482);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:2483 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_TLl, ID_TLl)) /*cast TLl*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 2483);
+      }
+      /* ./parser//parser_prod.nit:2484 */
+      ATTR_parser_nodes___ALlMethid____n_ll(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:2486 */
+      nit_abort("Aborted", NULL, LOCATE_parser_prod, 2486);
+    }
+    /* ./parser//parser_prod.nit:2488 */
+    goto label1;
+  }
+  label1: while(0);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser_prod___ALlMethid___visit_all(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 2492;
+  fra.me.meth = LOCATE_parser_prod___ALlMethid___visit_all;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:2494 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ALlMethid____n_ll(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_ll", LOCATE_parser_prod, 2494);
+  }
+  fra.me.REG[0] = ATTR_parser_nodes___ALlMethid____n_ll(fra.me.REG[0]);
+  CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser_prod___AGgMethid___empty_init(val_t p0, int* init_table){
+  int itpos83 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_AGgMethid].i;
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  if (init_table[itpos83]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 2498;
+  fra.me.meth = LOCATE_parser_prod___AGgMethid___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos83] = 1;
+  return;
+}
+void parser_prod___AGgMethid___init_aggmethid(val_t p0, val_t p1, int* init_table){
+  int itpos84 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_AGgMethid].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos84]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 2500;
+  fra.me.meth = LOCATE_parser_prod___AGgMethid___init_aggmethid;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:2504 */
+  CALL_parser_prod___AGgMethid___empty_init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  /* ./parser//parser_prod.nit:2505 */
+  REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Cast failed", NULL, LOCATE_parser_prod, 2505);
+  }
+  ATTR_parser_nodes___AGgMethid____n_gg(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./parser//parser_prod.nit:2506 */
+  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+    nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 2506);
+  }
+  CALL_parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  init_table[itpos84] = 1;
+  return;
+}
+void parser_prod___AGgMethid___replace_child(val_t p0, val_t p1, val_t p2){
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 2509;
+  fra.me.meth = LOCATE_parser_prod___AGgMethid___replace_child;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  /* ./parser//parser_prod.nit:2511 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AGgMethid____n_gg(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_gg", LOCATE_parser_prod, 2511);
+  }
+  fra.me.REG[3] = ATTR_parser_nodes___AGgMethid____n_gg(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+    REGB0 = REGB1;
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:2512 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:2513 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 2513);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:2514 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_TGg, ID_TGg)) /*cast TGg*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 2514);
+      }
+      /* ./parser//parser_prod.nit:2515 */
+      ATTR_parser_nodes___AGgMethid____n_gg(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:2517 */
+      nit_abort("Aborted", NULL, LOCATE_parser_prod, 2517);
+    }
+    /* ./parser//parser_prod.nit:2519 */
+    goto label1;
+  }
+  label1: while(0);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser_prod___AGgMethid___visit_all(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 2523;
+  fra.me.meth = LOCATE_parser_prod___AGgMethid___visit_all;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:2525 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AGgMethid____n_gg(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_gg", LOCATE_parser_prod, 2525);
+  }
+  fra.me.REG[0] = ATTR_parser_nodes___AGgMethid____n_gg(fra.me.REG[0]);
+  CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser_prod___ABraMethid___empty_init(val_t p0, int* init_table){
+  int itpos85 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ABraMethid].i;
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  if (init_table[itpos85]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 2529;
+  fra.me.meth = LOCATE_parser_prod___ABraMethid___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos85] = 1;
+  return;
+}
+void parser_prod___ABraMethid___init_abramethid(val_t p0, val_t p1, val_t p2, int* init_table){
+  int itpos86 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ABraMethid].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos86]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 2531;
+  fra.me.meth = LOCATE_parser_prod___ABraMethid___init_abramethid;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  /* ./parser//parser_prod.nit:2536 */
+  CALL_parser_prod___ABraMethid___empty_init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  /* ./parser//parser_prod.nit:2537 */
+  REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Cast failed", NULL, LOCATE_parser_prod, 2537);
+  }
+  ATTR_parser_nodes___ABraMethid____n_obra(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./parser//parser_prod.nit:2538 */
+  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+    nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 2538);
+  }
+  CALL_parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  /* ./parser//parser_prod.nit:2539 */
+  REGB0 = TAG_Bool(fra.me.REG[2]!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Cast failed", NULL, LOCATE_parser_prod, 2539);
+  }
+  ATTR_parser_nodes___ABraMethid____n_cbra(fra.me.REG[0]) = fra.me.REG[2];
+  /* ./parser//parser_prod.nit:2540 */
+  REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+    nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 2540);
+  }
+  CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  init_table[itpos86] = 1;
+  return;
+}
+void parser_prod___ABraMethid___replace_child(val_t p0, val_t p1, val_t p2){
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 2543;
+  fra.me.meth = LOCATE_parser_prod___ABraMethid___replace_child;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  /* ./parser//parser_prod.nit:2545 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ABraMethid____n_obra(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_obra", LOCATE_parser_prod, 2545);
+  }
+  fra.me.REG[3] = ATTR_parser_nodes___ABraMethid____n_obra(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+    REGB0 = REGB1;
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:2546 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:2547 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 2547);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:2548 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_TObra, ID_TObra)) /*cast TObra*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 2548);
+      }
+      /* ./parser//parser_prod.nit:2549 */
+      ATTR_parser_nodes___ABraMethid____n_obra(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:2551 */
+      nit_abort("Aborted", NULL, LOCATE_parser_prod, 2551);
+    }
+    /* ./parser//parser_prod.nit:2553 */
+    goto label1;
+  }
+  /* ./parser//parser_prod.nit:2555 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ABraMethid____n_cbra(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_cbra", LOCATE_parser_prod, 2555);
+  }
+  fra.me.REG[3] = ATTR_parser_nodes___ABraMethid____n_cbra(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+    REGB0 = REGB1;
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:2556 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:2557 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 2557);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:2558 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_TCbra, ID_TCbra)) /*cast TCbra*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 2558);
+      }
+      /* ./parser//parser_prod.nit:2559 */
+      ATTR_parser_nodes___ABraMethid____n_cbra(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:2561 */
+      nit_abort("Aborted", NULL, LOCATE_parser_prod, 2561);
+    }
+    /* ./parser//parser_prod.nit:2563 */
+    goto label1;
+  }
+  label1: while(0);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser_prod___ABraMethid___visit_all(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 2567;
+  fra.me.meth = LOCATE_parser_prod___ABraMethid___visit_all;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:2569 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ABraMethid____n_obra(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_obra", LOCATE_parser_prod, 2569);
+  }
+  fra.me.REG[2] = ATTR_parser_nodes___ABraMethid____n_obra(fra.me.REG[0]);
+  CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser_prod.nit:2570 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ABraMethid____n_cbra(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_cbra", LOCATE_parser_prod, 2570);
+  }
+  fra.me.REG[0] = ATTR_parser_nodes___ABraMethid____n_cbra(fra.me.REG[0]);
+  CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser_prod___AStarshipMethid___empty_init(val_t p0, int* init_table){
+  int itpos87 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_AStarshipMethid].i;
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  if (init_table[itpos87]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 2574;
+  fra.me.meth = LOCATE_parser_prod___AStarshipMethid___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos87] = 1;
+  return;
+}
+void parser_prod___AStarshipMethid___init_astarshipmethid(val_t p0, val_t p1, int* init_table){
+  int itpos88 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_AStarshipMethid].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos88]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 2576;
+  fra.me.meth = LOCATE_parser_prod___AStarshipMethid___init_astarshipmethid;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:2580 */
+  CALL_parser_prod___AStarshipMethid___empty_init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  /* ./parser//parser_prod.nit:2581 */
+  REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Cast failed", NULL, LOCATE_parser_prod, 2581);
+  }
+  ATTR_parser_nodes___AStarshipMethid____n_starship(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./parser//parser_prod.nit:2582 */
+  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+    nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 2582);
+  }
+  CALL_parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  init_table[itpos88] = 1;
+  return;
+}
+void parser_prod___AStarshipMethid___replace_child(val_t p0, val_t p1, val_t p2){
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 2585;
+  fra.me.meth = LOCATE_parser_prod___AStarshipMethid___replace_child;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  /* ./parser//parser_prod.nit:2587 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AStarshipMethid____n_starship(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_starship", LOCATE_parser_prod, 2587);
+  }
+  fra.me.REG[3] = ATTR_parser_nodes___AStarshipMethid____n_starship(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+    REGB0 = REGB1;
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:2588 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:2589 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 2589);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:2590 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_TStarship, ID_TStarship)) /*cast TStarship*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 2590);
+      }
+      /* ./parser//parser_prod.nit:2591 */
+      ATTR_parser_nodes___AStarshipMethid____n_starship(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:2593 */
+      nit_abort("Aborted", NULL, LOCATE_parser_prod, 2593);
+    }
+    /* ./parser//parser_prod.nit:2595 */
+    goto label1;
+  }
+  label1: while(0);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser_prod___AStarshipMethid___visit_all(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 2599;
+  fra.me.meth = LOCATE_parser_prod___AStarshipMethid___visit_all;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:2601 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AStarshipMethid____n_starship(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_starship", LOCATE_parser_prod, 2601);
+  }
+  fra.me.REG[0] = ATTR_parser_nodes___AStarshipMethid____n_starship(fra.me.REG[0]);
+  CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser_prod___AAssignMethid___empty_init(val_t p0, int* init_table){
+  int itpos89 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_AAssignMethid].i;
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  if (init_table[itpos89]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 2605;
+  fra.me.meth = LOCATE_parser_prod___AAssignMethid___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos89] = 1;
+  return;
+}
+void parser_prod___AAssignMethid___init_aassignmethid(val_t p0, val_t p1, val_t p2, int* init_table){
+  int itpos90 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_AAssignMethid].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos90]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 2607;
+  fra.me.meth = LOCATE_parser_prod___AAssignMethid___init_aassignmethid;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  /* ./parser//parser_prod.nit:2612 */
+  CALL_parser_prod___AAssignMethid___empty_init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  /* ./parser//parser_prod.nit:2613 */
+  REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Cast failed", NULL, LOCATE_parser_prod, 2613);
+  }
+  ATTR_parser_nodes___AAssignMethid____n_id(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./parser//parser_prod.nit:2614 */
+  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+    nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 2614);
+  }
+  CALL_parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  /* ./parser//parser_prod.nit:2615 */
+  REGB0 = TAG_Bool(fra.me.REG[2]!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Cast failed", NULL, LOCATE_parser_prod, 2615);
+  }
+  ATTR_parser_nodes___AAssignMethid____n_assign(fra.me.REG[0]) = fra.me.REG[2];
+  /* ./parser//parser_prod.nit:2616 */
+  REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+    nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 2616);
+  }
+  CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  init_table[itpos90] = 1;
+  return;
+}
+void parser_prod___AAssignMethid___replace_child(val_t p0, val_t p1, val_t p2){
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 2619;
+  fra.me.meth = LOCATE_parser_prod___AAssignMethid___replace_child;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  /* ./parser//parser_prod.nit:2621 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AAssignMethid____n_id(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_id", LOCATE_parser_prod, 2621);
+  }
+  fra.me.REG[3] = ATTR_parser_nodes___AAssignMethid____n_id(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+    REGB0 = REGB1;
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:2622 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:2623 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 2623);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:2624 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_TId, ID_TId)) /*cast TId*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 2624);
+      }
+      /* ./parser//parser_prod.nit:2625 */
+      ATTR_parser_nodes___AAssignMethid____n_id(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:2627 */
+      nit_abort("Aborted", NULL, LOCATE_parser_prod, 2627);
+    }
+    /* ./parser//parser_prod.nit:2629 */
+    goto label1;
+  }
+  /* ./parser//parser_prod.nit:2631 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AAssignMethid____n_assign(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_assign", LOCATE_parser_prod, 2631);
+  }
+  fra.me.REG[3] = ATTR_parser_nodes___AAssignMethid____n_assign(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+    REGB0 = REGB1;
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:2632 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:2633 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 2633);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:2634 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_TAssign, ID_TAssign)) /*cast TAssign*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 2634);
+      }
+      /* ./parser//parser_prod.nit:2635 */
+      ATTR_parser_nodes___AAssignMethid____n_assign(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:2637 */
+      nit_abort("Aborted", NULL, LOCATE_parser_prod, 2637);
+    }
+    /* ./parser//parser_prod.nit:2639 */
+    goto label1;
+  }
+  label1: while(0);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser_prod___AAssignMethid___visit_all(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 2643;
+  fra.me.meth = LOCATE_parser_prod___AAssignMethid___visit_all;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:2645 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AAssignMethid____n_id(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_id", LOCATE_parser_prod, 2645);
+  }
+  fra.me.REG[2] = ATTR_parser_nodes___AAssignMethid____n_id(fra.me.REG[0]);
+  CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser_prod.nit:2646 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AAssignMethid____n_assign(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_assign", LOCATE_parser_prod, 2646);
+  }
+  fra.me.REG[0] = ATTR_parser_nodes___AAssignMethid____n_assign(fra.me.REG[0]);
+  CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser_prod___ABraassignMethid___empty_init(val_t p0, int* init_table){
+  int itpos91 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ABraassignMethid].i;
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  if (init_table[itpos91]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 2650;
+  fra.me.meth = LOCATE_parser_prod___ABraassignMethid___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos91] = 1;
+  return;
+}
+void parser_prod___ABraassignMethid___init_abraassignmethid(val_t p0, val_t p1, val_t p2, val_t p3, int* init_table){
+  int itpos92 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ABraassignMethid].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos92]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 2652;
+  fra.me.meth = LOCATE_parser_prod___ABraassignMethid___init_abraassignmethid;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  fra.me.REG[3] = p3;
+  /* ./parser//parser_prod.nit:2658 */
+  CALL_parser_prod___ABraassignMethid___empty_init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  /* ./parser//parser_prod.nit:2659 */
+  REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Cast failed", NULL, LOCATE_parser_prod, 2659);
+  }
+  ATTR_parser_nodes___ABraassignMethid____n_obra(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./parser//parser_prod.nit:2660 */
+  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+    nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 2660);
+  }
+  CALL_parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  /* ./parser//parser_prod.nit:2661 */
+  REGB0 = TAG_Bool(fra.me.REG[2]!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Cast failed", NULL, LOCATE_parser_prod, 2661);
+  }
+  ATTR_parser_nodes___ABraassignMethid____n_cbra(fra.me.REG[0]) = fra.me.REG[2];
+  /* ./parser//parser_prod.nit:2662 */
+  REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+    nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 2662);
+  }
+  CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+  /* ./parser//parser_prod.nit:2663 */
+  REGB0 = TAG_Bool(fra.me.REG[3]!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Cast failed", NULL, LOCATE_parser_prod, 2663);
+  }
+  ATTR_parser_nodes___ABraassignMethid____n_assign(fra.me.REG[0]) = fra.me.REG[3];
+  /* ./parser//parser_prod.nit:2664 */
+  REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+    nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 2664);
+  }
+  CALL_parser_prod___ANode___parent__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  init_table[itpos92] = 1;
+  return;
+}
+void parser_prod___ABraassignMethid___replace_child(val_t p0, val_t p1, val_t p2){
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 2667;
+  fra.me.meth = LOCATE_parser_prod___ABraassignMethid___replace_child;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  /* ./parser//parser_prod.nit:2669 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ABraassignMethid____n_obra(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_obra", LOCATE_parser_prod, 2669);
+  }
+  fra.me.REG[3] = ATTR_parser_nodes___ABraassignMethid____n_obra(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+    REGB0 = REGB1;
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:2670 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:2671 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 2671);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:2672 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_TObra, ID_TObra)) /*cast TObra*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 2672);
+      }
+      /* ./parser//parser_prod.nit:2673 */
+      ATTR_parser_nodes___ABraassignMethid____n_obra(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:2675 */
+      nit_abort("Aborted", NULL, LOCATE_parser_prod, 2675);
+    }
+    /* ./parser//parser_prod.nit:2677 */
+    goto label1;
+  }
+  /* ./parser//parser_prod.nit:2679 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ABraassignMethid____n_cbra(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_cbra", LOCATE_parser_prod, 2679);
+  }
+  fra.me.REG[3] = ATTR_parser_nodes___ABraassignMethid____n_cbra(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+    REGB0 = REGB1;
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:2680 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:2681 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 2681);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:2682 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_TCbra, ID_TCbra)) /*cast TCbra*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 2682);
+      }
+      /* ./parser//parser_prod.nit:2683 */
+      ATTR_parser_nodes___ABraassignMethid____n_cbra(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:2685 */
+      nit_abort("Aborted", NULL, LOCATE_parser_prod, 2685);
+    }
+    /* ./parser//parser_prod.nit:2687 */
+    goto label1;
+  }
+  /* ./parser//parser_prod.nit:2689 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ABraassignMethid____n_assign(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_assign", LOCATE_parser_prod, 2689);
+  }
+  fra.me.REG[3] = ATTR_parser_nodes___ABraassignMethid____n_assign(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+    REGB0 = REGB1;
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:2690 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:2691 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 2691);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:2692 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_TAssign, ID_TAssign)) /*cast TAssign*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 2692);
+      }
+      /* ./parser//parser_prod.nit:2693 */
+      ATTR_parser_nodes___ABraassignMethid____n_assign(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:2695 */
+      nit_abort("Aborted", NULL, LOCATE_parser_prod, 2695);
+    }
+    /* ./parser//parser_prod.nit:2697 */
+    goto label1;
+  }
+  label1: while(0);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser_prod___ABraassignMethid___visit_all(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 2701;
+  fra.me.meth = LOCATE_parser_prod___ABraassignMethid___visit_all;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:2703 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ABraassignMethid____n_obra(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_obra", LOCATE_parser_prod, 2703);
+  }
+  fra.me.REG[2] = ATTR_parser_nodes___ABraassignMethid____n_obra(fra.me.REG[0]);
+  CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser_prod.nit:2704 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ABraassignMethid____n_cbra(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_cbra", LOCATE_parser_prod, 2704);
+  }
+  fra.me.REG[2] = ATTR_parser_nodes___ABraassignMethid____n_cbra(fra.me.REG[0]);
+  CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser_prod.nit:2705 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ABraassignMethid____n_assign(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_assign", LOCATE_parser_prod, 2705);
+  }
+  fra.me.REG[0] = ATTR_parser_nodes___ABraassignMethid____n_assign(fra.me.REG[0]);
+  CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser_prod___ASignature___empty_init(val_t p0, int* init_table){
+  int itpos93 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ASignature].i;
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  if (init_table[itpos93]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 2709;
+  fra.me.meth = LOCATE_parser_prod___ASignature___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos93] = 1;
+  return;
+}
+void parser_prod___ASignature___init_asignature(val_t p0, val_t p1, val_t p2, val_t p3, int* init_table){
+  int itpos94 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ASignature].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  if (init_table[itpos94]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 2711;
+  fra.me.meth = LOCATE_parser_prod___ASignature___init_asignature;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  fra.me.REG[3] = p3;
+  /* ./parser//parser_prod.nit:2717 */
+  CALL_parser_prod___ASignature___empty_init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  CALL_abstract_collection___Collection___iterate(fra.me.REG[1])(fra.me.REG[1], (&(fra.me)), ((fun_t)OC_parser_prod___ASignature___init_asignature_1));
+  /* ./parser//parser_prod.nit:2723 */
+  ATTR_parser_nodes___ASignature____n_type(fra.me.REG[0]) = fra.me.REG[2];
+  /* ./parser//parser_prod.nit:2724 */
+  REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:2725 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+      nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 2725);
+    }
+    CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+  }
+  CALL_abstract_collection___Collection___iterate(fra.me.REG[3])(fra.me.REG[3], (&(fra.me)), ((fun_t)OC_parser_prod___ASignature___init_asignature_2));
+  stack_frame_head = fra.me.prev;
+  init_table[itpos94] = 1;
+  return;
+}
+  void OC_parser_prod___ASignature___init_asignature_1(struct stack_frame_t *closctx, val_t p0, struct stack_frame_t *closctx_param, fun_t clos_fun0){
+    struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+    val_t REGB0;
+    fun_t CREG[1];
+    val_t tmp;
+    /* ./parser//parser_prod.nit:2718 */
+    fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+    fra.me.file = LOCATE_parser_prod;
+    fra.me.line = 0;
+    fra.me.meth = LOCATE_parser_prod___ASignature___init_asignature;
+    fra.me.has_broke = 0;
+    fra.me.REG_size = 2;
+    fra.me.REG[0] = NIT_NULL;
+    fra.me.REG[1] = NIT_NULL;
+    fra.me.closure_ctx = closctx_param;
+    fra.me.closure_funs = CREG;
+    fra.me.REG[0] = p0;
+    CREG[0] = clos_fun0;
+    /* ./parser//parser_prod.nit:2719 */
+    REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[0], COLOR_AParam, ID_AParam)) /*cast AParam*/;
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      nit_abort("Assert failed", NULL, LOCATE_parser_prod, 2719);
+    }
+    /* ./parser//parser_prod.nit:2720 */
+    REGB0 = TAG_Bool(ATTR_parser_nodes___ASignature____n_params(closctx->REG[0])!=NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      nit_abort("Uninitialized attribute %s", "_n_params", LOCATE_parser_prod, 2720);
+    }
+    fra.me.REG[1] = ATTR_parser_nodes___ASignature____n_params(closctx->REG[0]);
+    CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+    /* ./parser//parser_prod.nit:2721 */
+    CALL_parser_prod___ANode___parent__eq(fra.me.REG[0])(fra.me.REG[0], closctx->REG[0]);
+    stack_frame_head = fra.me.prev;
+    return;
+  }
+  void OC_parser_prod___ASignature___init_asignature_2(struct stack_frame_t *closctx, val_t p0, struct stack_frame_t *closctx_param, fun_t clos_fun0){
+    struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+    val_t REGB0;
+    fun_t CREG[1];
+    val_t tmp;
+    /* ./parser//parser_prod.nit:2727 */
+    fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+    fra.me.file = LOCATE_parser_prod;
+    fra.me.line = 0;
+    fra.me.meth = LOCATE_parser_prod___ASignature___init_asignature;
+    fra.me.has_broke = 0;
+    fra.me.REG_size = 2;
+    fra.me.REG[0] = NIT_NULL;
+    fra.me.REG[1] = NIT_NULL;
+    fra.me.closure_ctx = closctx_param;
+    fra.me.closure_funs = CREG;
+    fra.me.REG[0] = p0;
+    CREG[0] = clos_fun0;
+    /* ./parser//parser_prod.nit:2728 */
+    REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[0], COLOR_AClosureDecl, ID_AClosureDecl)) /*cast AClosureDecl*/;
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      nit_abort("Assert failed", NULL, LOCATE_parser_prod, 2728);
+    }
+    /* ./parser//parser_prod.nit:2729 */
+    REGB0 = TAG_Bool(ATTR_parser_nodes___ASignature____n_closure_decls(closctx->REG[0])!=NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      nit_abort("Uninitialized attribute %s", "_n_closure_decls", LOCATE_parser_prod, 2729);
+    }
+    fra.me.REG[1] = ATTR_parser_nodes___ASignature____n_closure_decls(closctx->REG[0]);
+    CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+    /* ./parser//parser_prod.nit:2730 */
+    CALL_parser_prod___ANode___parent__eq(fra.me.REG[0])(fra.me.REG[0], closctx->REG[0]);
+    stack_frame_head = fra.me.prev;
+    return;
+  }
+void parser_prod___ASignature___replace_child(val_t p0, val_t p1, val_t p2){
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t REGB2;
+  val_t REGB3;
+  val_t REGB4;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 2734;
+  fra.me.meth = LOCATE_parser_prod___ASignature___replace_child;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  /* ./parser//parser_prod.nit:2736 */
+  REGB0 = TAG_Int(0);
+  REGB1 = TAG_Bool(ATTR_parser_nodes___ASignature____n_params(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB1)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_params", LOCATE_parser_prod, 2736);
+  }
+  fra.me.REG[3] = ATTR_parser_nodes___ASignature____n_params(fra.me.REG[0]);
+  REGB1 = CALL_abstract_collection___Collection___length(fra.me.REG[3])(fra.me.REG[3]);
+  /* ./../lib/standard//kernel.nit:332 */
+  while(1) {
+    /* ./../lib/standard//kernel.nit:212 */
+    REGB2 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
+    /* ./../lib/standard//kernel.nit:332 */
+    if (UNTAG_Bool(REGB2)) {
+      /* ./parser//parser_prod.nit:2736 */
+      REGB2 = REGB0;
+      /* ./parser//parser_prod.nit:2737 */
+      REGB3 = TAG_Bool(ATTR_parser_nodes___ASignature____n_params(fra.me.REG[0])!=NIT_NULL);
+      if (UNTAG_Bool(REGB3)) {
+      } else {
+        nit_abort("Uninitialized attribute %s", "_n_params", LOCATE_parser_prod, 2737);
+      }
+      fra.me.REG[3] = ATTR_parser_nodes___ASignature____n_params(fra.me.REG[0]);
+      fra.me.REG[3] = CALL_abstract_collection___MapRead_____bra(fra.me.REG[3])(fra.me.REG[3], REGB2);
+      REGB3 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
+      if (UNTAG_Bool(REGB3)) {
+      } else {
+        REGB4 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+        if (UNTAG_Bool(REGB4)) {
+          REGB4 = TAG_Bool(false);
+          REGB3 = REGB4;
+        } else {
+          REGB4 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+          REGB3 = REGB4;
+        }
+      }
+      if (UNTAG_Bool(REGB3)) {
+        /* ./parser//parser_prod.nit:2738 */
+        REGB3 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+        if (UNTAG_Bool(REGB3)) {
+        } else {
+          REGB4 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+          if (UNTAG_Bool(REGB4)) {
+            REGB4 = TAG_Bool(false);
+            REGB3 = REGB4;
+          } else {
+            REGB4 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+            REGB3 = REGB4;
+          }
+        }
+        REGB3 = TAG_Bool(!UNTAG_Bool(REGB3));
+        if (UNTAG_Bool(REGB3)) {
+          /* ./parser//parser_prod.nit:2739 */
+          REGB3 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_AParam, ID_AParam)) /*cast AParam*/;
+          if (UNTAG_Bool(REGB3)) {
+          } else {
+            nit_abort("Assert failed", NULL, LOCATE_parser_prod, 2739);
+          }
+          /* ./parser//parser_prod.nit:2740 */
+          REGB3 = TAG_Bool(ATTR_parser_nodes___ASignature____n_params(fra.me.REG[0])!=NIT_NULL);
+          if (UNTAG_Bool(REGB3)) {
+          } else {
+            nit_abort("Uninitialized attribute %s", "_n_params", LOCATE_parser_prod, 2740);
+          }
+          fra.me.REG[3] = ATTR_parser_nodes___ASignature____n_params(fra.me.REG[0]);
+          CALL_abstract_collection___Map_____braeq(fra.me.REG[3])(fra.me.REG[3], REGB2, fra.me.REG[2]);
+          /* ./parser//parser_prod.nit:2741 */
+          REGB3 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+          if (UNTAG_Bool(REGB3)) {
+            nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 2741);
+          }
+          CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+        } else {
+          /* ./parser//parser_prod.nit:2743 */
+          REGB3 = TAG_Bool(ATTR_parser_nodes___ASignature____n_params(fra.me.REG[0])!=NIT_NULL);
+          if (UNTAG_Bool(REGB3)) {
+          } else {
+            nit_abort("Uninitialized attribute %s", "_n_params", LOCATE_parser_prod, 2743);
+          }
+          fra.me.REG[3] = ATTR_parser_nodes___ASignature____n_params(fra.me.REG[0]);
+          CALL_abstract_collection___Map___remove_at(fra.me.REG[3])(fra.me.REG[3], REGB2);
+        }
+        /* ./parser//parser_prod.nit:2745 */
+        goto label1;
+      }
+      /* ./../lib/standard//kernel.nit:334 */
+      REGB2 = TAG_Int(1);
+      /* ./../lib/standard//kernel.nit:215 */
+      REGB2 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB2));
+      /* ./../lib/standard//kernel.nit:334 */
+      REGB0 = REGB2;
+    } else {
+      /* ./../lib/standard//kernel.nit:332 */
+      goto label2;
+    }
+  }
+  label2: while(0);
+  /* ./parser//parser_prod.nit:2748 */
+  fra.me.REG[3] = ATTR_parser_nodes___ASignature____n_type(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+      REGB0 = REGB1;
+    }
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:2749 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:2750 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 2750);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:2751 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_AType, ID_AType)) /*cast AType*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 2751);
+      }
+      /* ./parser//parser_prod.nit:2752 */
+      ATTR_parser_nodes___ASignature____n_type(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:2754 */
+      ATTR_parser_nodes___ASignature____n_type(fra.me.REG[0]) = NIT_NULL;
+    }
+    /* ./parser//parser_prod.nit:2756 */
+    goto label1;
+  }
+  /* ./parser//parser_prod.nit:2758 */
+  REGB0 = TAG_Int(0);
+  REGB1 = TAG_Bool(ATTR_parser_nodes___ASignature____n_closure_decls(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB1)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_closure_decls", LOCATE_parser_prod, 2758);
+  }
+  fra.me.REG[3] = ATTR_parser_nodes___ASignature____n_closure_decls(fra.me.REG[0]);
+  REGB1 = CALL_abstract_collection___Collection___length(fra.me.REG[3])(fra.me.REG[3]);
+  /* ./../lib/standard//kernel.nit:332 */
+  while(1) {
+    /* ./../lib/standard//kernel.nit:212 */
+    REGB2 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
+    /* ./../lib/standard//kernel.nit:332 */
+    if (UNTAG_Bool(REGB2)) {
+      /* ./parser//parser_prod.nit:2758 */
+      REGB2 = REGB0;
+      /* ./parser//parser_prod.nit:2759 */
+      REGB3 = TAG_Bool(ATTR_parser_nodes___ASignature____n_closure_decls(fra.me.REG[0])!=NIT_NULL);
+      if (UNTAG_Bool(REGB3)) {
+      } else {
+        nit_abort("Uninitialized attribute %s", "_n_closure_decls", LOCATE_parser_prod, 2759);
+      }
+      fra.me.REG[3] = ATTR_parser_nodes___ASignature____n_closure_decls(fra.me.REG[0]);
+      fra.me.REG[3] = CALL_abstract_collection___MapRead_____bra(fra.me.REG[3])(fra.me.REG[3], REGB2);
+      REGB3 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
+      if (UNTAG_Bool(REGB3)) {
+      } else {
+        REGB4 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+        if (UNTAG_Bool(REGB4)) {
+          REGB4 = TAG_Bool(false);
+          REGB3 = REGB4;
+        } else {
+          REGB4 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+          REGB3 = REGB4;
+        }
+      }
+      if (UNTAG_Bool(REGB3)) {
+        /* ./parser//parser_prod.nit:2760 */
+        REGB3 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+        if (UNTAG_Bool(REGB3)) {
+        } else {
+          REGB4 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+          if (UNTAG_Bool(REGB4)) {
+            REGB4 = TAG_Bool(false);
+            REGB3 = REGB4;
+          } else {
+            REGB4 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+            REGB3 = REGB4;
+          }
+        }
+        REGB3 = TAG_Bool(!UNTAG_Bool(REGB3));
+        if (UNTAG_Bool(REGB3)) {
+          /* ./parser//parser_prod.nit:2761 */
+          REGB3 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_AClosureDecl, ID_AClosureDecl)) /*cast AClosureDecl*/;
+          if (UNTAG_Bool(REGB3)) {
+          } else {
+            nit_abort("Assert failed", NULL, LOCATE_parser_prod, 2761);
+          }
+          /* ./parser//parser_prod.nit:2762 */
+          REGB3 = TAG_Bool(ATTR_parser_nodes___ASignature____n_closure_decls(fra.me.REG[0])!=NIT_NULL);
+          if (UNTAG_Bool(REGB3)) {
+          } else {
+            nit_abort("Uninitialized attribute %s", "_n_closure_decls", LOCATE_parser_prod, 2762);
+          }
+          fra.me.REG[3] = ATTR_parser_nodes___ASignature____n_closure_decls(fra.me.REG[0]);
+          CALL_abstract_collection___Map_____braeq(fra.me.REG[3])(fra.me.REG[3], REGB2, fra.me.REG[2]);
+          /* ./parser//parser_prod.nit:2763 */
+          REGB3 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+          if (UNTAG_Bool(REGB3)) {
+            nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 2763);
+          }
+          CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+        } else {
+          /* ./parser//parser_prod.nit:2765 */
+          REGB3 = TAG_Bool(ATTR_parser_nodes___ASignature____n_closure_decls(fra.me.REG[0])!=NIT_NULL);
+          if (UNTAG_Bool(REGB3)) {
+          } else {
+            nit_abort("Uninitialized attribute %s", "_n_closure_decls", LOCATE_parser_prod, 2765);
+          }
+          fra.me.REG[3] = ATTR_parser_nodes___ASignature____n_closure_decls(fra.me.REG[0]);
+          CALL_abstract_collection___Map___remove_at(fra.me.REG[3])(fra.me.REG[3], REGB2);
+        }
+        /* ./parser//parser_prod.nit:2767 */
+        goto label1;
+      }
+      /* ./../lib/standard//kernel.nit:334 */
+      REGB2 = TAG_Int(1);
+      /* ./../lib/standard//kernel.nit:215 */
+      REGB2 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB2));
+      /* ./../lib/standard//kernel.nit:334 */
+      REGB0 = REGB2;
+    } else {
+      /* ./../lib/standard//kernel.nit:332 */
+      goto label3;
+    }
+  }
+  label3: while(0);
+  label1: while(0);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser_prod___ASignature___visit_all(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 2772;
+  fra.me.meth = LOCATE_parser_prod___ASignature___visit_all;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:2774 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ASignature____n_params(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_params", LOCATE_parser_prod, 2774);
+  }
+  fra.me.REG[2] = ATTR_parser_nodes___ASignature____n_params(fra.me.REG[0]);
+  CALL_abstract_collection___Collection___iterate(fra.me.REG[2])(fra.me.REG[2], (&(fra.me)), ((fun_t)OC_parser_prod___ASignature___visit_all_1));
+  /* ./parser//parser_prod.nit:2777 */
+  fra.me.REG[2] = ATTR_parser_nodes___ASignature____n_type(fra.me.REG[0]);
+  REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:2778 */
+    fra.me.REG[2] = ATTR_parser_nodes___ASignature____n_type(fra.me.REG[0]);
+    REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_AType, ID_AType)) /*cast AType*/;
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      nit_abort("Cast failed", NULL, LOCATE_parser_prod, 2778);
+    }
+    CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  }
+  /* ./parser//parser_prod.nit:2780 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ASignature____n_closure_decls(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_closure_decls", LOCATE_parser_prod, 2780);
+  }
+  fra.me.REG[0] = ATTR_parser_nodes___ASignature____n_closure_decls(fra.me.REG[0]);
+  CALL_abstract_collection___Collection___iterate(fra.me.REG[0])(fra.me.REG[0], (&(fra.me)), ((fun_t)OC_parser_prod___ASignature___visit_all_2));
+  stack_frame_head = fra.me.prev;
+  return;
+}
+  void OC_parser_prod___ASignature___visit_all_1(struct stack_frame_t *closctx, val_t p0, struct stack_frame_t *closctx_param, fun_t clos_fun0){
+    struct {struct stack_frame_t me;} fra;
+    fun_t CREG[1];
+    val_t tmp;
+    fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+    fra.me.file = LOCATE_parser_prod;
+    fra.me.line = 0;
+    fra.me.meth = LOCATE_parser_prod___ASignature___visit_all;
+    fra.me.has_broke = 0;
+    fra.me.REG_size = 1;
+    fra.me.REG[0] = NIT_NULL;
+    fra.me.closure_ctx = closctx_param;
+    fra.me.closure_funs = CREG;
+    fra.me.REG[0] = p0;
+    CREG[0] = clos_fun0;
+    /* ./parser//parser_prod.nit:2775 */
+    CALL_parser_prod___Visitor___enter_visit(closctx->REG[1])(closctx->REG[1], fra.me.REG[0]);
+    stack_frame_head = fra.me.prev;
+    return;
+  }
+  void OC_parser_prod___ASignature___visit_all_2(struct stack_frame_t *closctx, val_t p0, struct stack_frame_t *closctx_param, fun_t clos_fun0){
+    struct {struct stack_frame_t me;} fra;
+    fun_t CREG[1];
+    val_t tmp;
+    fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+    fra.me.file = LOCATE_parser_prod;
+    fra.me.line = 0;
+    fra.me.meth = LOCATE_parser_prod___ASignature___visit_all;
+    fra.me.has_broke = 0;
+    fra.me.REG_size = 1;
+    fra.me.REG[0] = NIT_NULL;
+    fra.me.closure_ctx = closctx_param;
+    fra.me.closure_funs = CREG;
+    fra.me.REG[0] = p0;
+    CREG[0] = clos_fun0;
+    /* ./parser//parser_prod.nit:2781 */
+    CALL_parser_prod___Visitor___enter_visit(closctx->REG[1])(closctx->REG[1], fra.me.REG[0]);
+    stack_frame_head = fra.me.prev;
+    return;
+  }
+void parser_prod___AParam___empty_init(val_t p0, int* init_table){
+  int itpos95 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_AParam].i;
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  if (init_table[itpos95]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 2786;
+  fra.me.meth = LOCATE_parser_prod___AParam___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos95] = 1;
+  return;
+}
+void parser_prod___AParam___init_aparam(val_t p0, val_t p1, val_t p2, val_t p3, int* init_table){
+  int itpos96 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_AParam].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  if (init_table[itpos96]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 2788;
+  fra.me.meth = LOCATE_parser_prod___AParam___init_aparam;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  fra.me.REG[3] = p3;
+  /* ./parser//parser_prod.nit:2794 */
+  CALL_parser_prod___AParam___empty_init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  /* ./parser//parser_prod.nit:2795 */
+  REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Cast failed", NULL, LOCATE_parser_prod, 2795);
+  }
+  ATTR_parser_nodes___AParam____n_id(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./parser//parser_prod.nit:2796 */
+  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+    nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 2796);
+  }
+  CALL_parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  /* ./parser//parser_prod.nit:2797 */
+  ATTR_parser_nodes___AParam____n_type(fra.me.REG[0]) = fra.me.REG[2];
+  /* ./parser//parser_prod.nit:2798 */
+  REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:2799 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+      nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 2799);
+    }
+    CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+  }
+  /* ./parser//parser_prod.nit:2801 */
+  ATTR_parser_nodes___AParam____n_dotdotdot(fra.me.REG[0]) = fra.me.REG[3];
+  /* ./parser//parser_prod.nit:2802 */
+  REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:2803 */
+    REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+      nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 2803);
+    }
+    CALL_parser_prod___ANode___parent__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[0]);
+  }
+  stack_frame_head = fra.me.prev;
+  init_table[itpos96] = 1;
+  return;
+}
+void parser_prod___AParam___replace_child(val_t p0, val_t p1, val_t p2){
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 2807;
+  fra.me.meth = LOCATE_parser_prod___AParam___replace_child;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  /* ./parser//parser_prod.nit:2809 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AParam____n_id(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_id", LOCATE_parser_prod, 2809);
+  }
+  fra.me.REG[3] = ATTR_parser_nodes___AParam____n_id(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+    REGB0 = REGB1;
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:2810 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:2811 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 2811);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:2812 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_TId, ID_TId)) /*cast TId*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 2812);
+      }
+      /* ./parser//parser_prod.nit:2813 */
+      ATTR_parser_nodes___AParam____n_id(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:2815 */
+      nit_abort("Aborted", NULL, LOCATE_parser_prod, 2815);
+    }
+    /* ./parser//parser_prod.nit:2817 */
+    goto label1;
+  }
+  /* ./parser//parser_prod.nit:2819 */
+  fra.me.REG[3] = ATTR_parser_nodes___AParam____n_type(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+      REGB0 = REGB1;
+    }
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:2820 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:2821 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 2821);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:2822 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_AType, ID_AType)) /*cast AType*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 2822);
+      }
+      /* ./parser//parser_prod.nit:2823 */
+      ATTR_parser_nodes___AParam____n_type(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:2825 */
+      ATTR_parser_nodes___AParam____n_type(fra.me.REG[0]) = NIT_NULL;
+    }
+    /* ./parser//parser_prod.nit:2827 */
+    goto label1;
+  }
+  /* ./parser//parser_prod.nit:2829 */
+  fra.me.REG[3] = ATTR_parser_nodes___AParam____n_dotdotdot(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+      REGB0 = REGB1;
+    }
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:2830 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:2831 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 2831);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:2832 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_TDotdotdot, ID_TDotdotdot)) /*cast TDotdotdot*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 2832);
+      }
+      /* ./parser//parser_prod.nit:2833 */
+      ATTR_parser_nodes___AParam____n_dotdotdot(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:2835 */
+      ATTR_parser_nodes___AParam____n_dotdotdot(fra.me.REG[0]) = NIT_NULL;
+    }
+    /* ./parser//parser_prod.nit:2837 */
+    goto label1;
+  }
+  label1: while(0);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser_prod___AParam___visit_all(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 2841;
+  fra.me.meth = LOCATE_parser_prod___AParam___visit_all;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:2843 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AParam____n_id(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_id", LOCATE_parser_prod, 2843);
+  }
+  fra.me.REG[2] = ATTR_parser_nodes___AParam____n_id(fra.me.REG[0]);
+  CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser_prod.nit:2844 */
+  fra.me.REG[2] = ATTR_parser_nodes___AParam____n_type(fra.me.REG[0]);
+  REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:2845 */
+    fra.me.REG[2] = ATTR_parser_nodes___AParam____n_type(fra.me.REG[0]);
+    REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_AType, ID_AType)) /*cast AType*/;
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      nit_abort("Cast failed", NULL, LOCATE_parser_prod, 2845);
+    }
+    CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  }
+  /* ./parser//parser_prod.nit:2847 */
+  fra.me.REG[2] = ATTR_parser_nodes___AParam____n_dotdotdot(fra.me.REG[0]);
+  REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:2848 */
+    fra.me.REG[0] = ATTR_parser_nodes___AParam____n_dotdotdot(fra.me.REG[0]);
+    REGB0 = TAG_Bool((fra.me.REG[0]!=NIT_NULL) && VAL_ISA(fra.me.REG[0], COLOR_TDotdotdot, ID_TDotdotdot)) /*cast TDotdotdot*/;
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      nit_abort("Cast failed", NULL, LOCATE_parser_prod, 2848);
+    }
+    CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  }
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser_prod___AClosureDecl___empty_init(val_t p0, int* init_table){
+  int itpos97 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_AClosureDecl].i;
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  if (init_table[itpos97]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 2853;
+  fra.me.meth = LOCATE_parser_prod___AClosureDecl___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos97] = 1;
+  return;
+}
+void parser_prod___AClosureDecl___init_aclosuredecl(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4, val_t p5, int* init_table){
+  int itpos98 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_AClosureDecl].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[5];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  if (init_table[itpos98]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 2855;
+  fra.me.meth = LOCATE_parser_prod___AClosureDecl___init_aclosuredecl;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 6;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  fra.me.REG[3] = p3;
+  fra.me.REG[4] = p4;
+  fra.me.REG[5] = p5;
+  /* ./parser//parser_prod.nit:2863 */
+  CALL_parser_prod___AClosureDecl___empty_init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  /* ./parser//parser_prod.nit:2864 */
+  ATTR_parser_nodes___AClosureDecl____n_kwbreak(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./parser//parser_prod.nit:2865 */
+  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:2866 */
+    REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+      nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 2866);
+    }
+    CALL_parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  }
+  /* ./parser//parser_prod.nit:2868 */
+  REGB0 = TAG_Bool(fra.me.REG[2]!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Cast failed", NULL, LOCATE_parser_prod, 2868);
+  }
+  ATTR_parser_nodes___AClosureDecl____n_bang(fra.me.REG[0]) = fra.me.REG[2];
+  /* ./parser//parser_prod.nit:2869 */
+  REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+    nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 2869);
+  }
+  CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+  /* ./parser//parser_prod.nit:2870 */
+  REGB0 = TAG_Bool(fra.me.REG[3]!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Cast failed", NULL, LOCATE_parser_prod, 2870);
+  }
+  ATTR_parser_nodes___AClosureDecl____n_id(fra.me.REG[0]) = fra.me.REG[3];
+  /* ./parser//parser_prod.nit:2871 */
+  REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+    nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 2871);
+  }
+  CALL_parser_prod___ANode___parent__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[0]);
+  /* ./parser//parser_prod.nit:2872 */
+  REGB0 = TAG_Bool(fra.me.REG[4]!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Cast failed", NULL, LOCATE_parser_prod, 2872);
+  }
+  ATTR_parser_nodes___AClosureDecl____n_signature(fra.me.REG[0]) = fra.me.REG[4];
+  /* ./parser//parser_prod.nit:2873 */
+  REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+    nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 2873);
+  }
+  CALL_parser_prod___ANode___parent__eq(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[0]);
+  /* ./parser//parser_prod.nit:2874 */
+  ATTR_parser_nodes___AClosureDecl____n_expr(fra.me.REG[0]) = fra.me.REG[5];
+  /* ./parser//parser_prod.nit:2875 */
+  REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[5])(fra.me.REG[5], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:2876 */
+    REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+      nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 2876);
+    }
+    CALL_parser_prod___ANode___parent__eq(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[0]);
+  }
+  stack_frame_head = fra.me.prev;
+  init_table[itpos98] = 1;
+  return;
+}
+void parser_prod___AClosureDecl___replace_child(val_t p0, val_t p1, val_t p2){
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 2880;
+  fra.me.meth = LOCATE_parser_prod___AClosureDecl___replace_child;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  /* ./parser//parser_prod.nit:2882 */
+  fra.me.REG[3] = ATTR_parser_nodes___AClosureDecl____n_kwbreak(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+      REGB0 = REGB1;
+    }
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:2883 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:2884 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 2884);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:2885 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_TKwbreak, ID_TKwbreak)) /*cast TKwbreak*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 2885);
+      }
+      /* ./parser//parser_prod.nit:2886 */
+      ATTR_parser_nodes___AClosureDecl____n_kwbreak(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:2888 */
+      ATTR_parser_nodes___AClosureDecl____n_kwbreak(fra.me.REG[0]) = NIT_NULL;
+    }
+    /* ./parser//parser_prod.nit:2890 */
+    goto label1;
+  }
+  /* ./parser//parser_prod.nit:2892 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AClosureDecl____n_bang(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_bang", LOCATE_parser_prod, 2892);
+  }
+  fra.me.REG[3] = ATTR_parser_nodes___AClosureDecl____n_bang(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+    REGB0 = REGB1;
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:2893 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:2894 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 2894);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:2895 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_TBang, ID_TBang)) /*cast TBang*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 2895);
+      }
+      /* ./parser//parser_prod.nit:2896 */
+      ATTR_parser_nodes___AClosureDecl____n_bang(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:2898 */
+      nit_abort("Aborted", NULL, LOCATE_parser_prod, 2898);
+    }
+    /* ./parser//parser_prod.nit:2900 */
+    goto label1;
+  }
+  /* ./parser//parser_prod.nit:2902 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AClosureDecl____n_id(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_id", LOCATE_parser_prod, 2902);
+  }
+  fra.me.REG[3] = ATTR_parser_nodes___AClosureDecl____n_id(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+    REGB0 = REGB1;
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:2903 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:2904 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 2904);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:2905 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_TId, ID_TId)) /*cast TId*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 2905);
+      }
+      /* ./parser//parser_prod.nit:2906 */
+      ATTR_parser_nodes___AClosureDecl____n_id(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:2908 */
+      nit_abort("Aborted", NULL, LOCATE_parser_prod, 2908);
+    }
+    /* ./parser//parser_prod.nit:2910 */
+    goto label1;
+  }
+  /* ./parser//parser_prod.nit:2912 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AClosureDecl____n_signature(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_signature", LOCATE_parser_prod, 2912);
+  }
+  fra.me.REG[3] = ATTR_parser_nodes___AClosureDecl____n_signature(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+    REGB0 = REGB1;
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:2913 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:2914 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 2914);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:2915 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_ASignature, ID_ASignature)) /*cast ASignature*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 2915);
+      }
+      /* ./parser//parser_prod.nit:2916 */
+      ATTR_parser_nodes___AClosureDecl____n_signature(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:2918 */
+      nit_abort("Aborted", NULL, LOCATE_parser_prod, 2918);
+    }
+    /* ./parser//parser_prod.nit:2920 */
+    goto label1;
+  }
+  /* ./parser//parser_prod.nit:2922 */
+  fra.me.REG[3] = ATTR_parser_nodes___AClosureDecl____n_expr(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+      REGB0 = REGB1;
+    }
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:2923 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:2924 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 2924);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:2925 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_AExpr, ID_AExpr)) /*cast AExpr*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 2925);
+      }
+      /* ./parser//parser_prod.nit:2926 */
+      ATTR_parser_nodes___AClosureDecl____n_expr(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:2928 */
+      ATTR_parser_nodes___AClosureDecl____n_expr(fra.me.REG[0]) = NIT_NULL;
+    }
+    /* ./parser//parser_prod.nit:2930 */
+    goto label1;
+  }
+  label1: while(0);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser_prod___AClosureDecl___visit_all(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 2934;
+  fra.me.meth = LOCATE_parser_prod___AClosureDecl___visit_all;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:2936 */
+  fra.me.REG[2] = ATTR_parser_nodes___AClosureDecl____n_kwbreak(fra.me.REG[0]);
+  REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:2937 */
+    fra.me.REG[2] = ATTR_parser_nodes___AClosureDecl____n_kwbreak(fra.me.REG[0]);
+    REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_TKwbreak, ID_TKwbreak)) /*cast TKwbreak*/;
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      nit_abort("Cast failed", NULL, LOCATE_parser_prod, 2937);
+    }
+    CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  }
+  /* ./parser//parser_prod.nit:2939 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AClosureDecl____n_bang(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_bang", LOCATE_parser_prod, 2939);
+  }
+  fra.me.REG[2] = ATTR_parser_nodes___AClosureDecl____n_bang(fra.me.REG[0]);
+  CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser_prod.nit:2940 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AClosureDecl____n_id(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_id", LOCATE_parser_prod, 2940);
+  }
+  fra.me.REG[2] = ATTR_parser_nodes___AClosureDecl____n_id(fra.me.REG[0]);
+  CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser_prod.nit:2941 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AClosureDecl____n_signature(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_signature", LOCATE_parser_prod, 2941);
+  }
+  fra.me.REG[2] = ATTR_parser_nodes___AClosureDecl____n_signature(fra.me.REG[0]);
+  CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser_prod.nit:2942 */
+  fra.me.REG[2] = ATTR_parser_nodes___AClosureDecl____n_expr(fra.me.REG[0]);
+  REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:2943 */
+    fra.me.REG[0] = ATTR_parser_nodes___AClosureDecl____n_expr(fra.me.REG[0]);
+    REGB0 = TAG_Bool((fra.me.REG[0]!=NIT_NULL) && VAL_ISA(fra.me.REG[0], COLOR_AExpr, ID_AExpr)) /*cast AExpr*/;
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      nit_abort("Cast failed", NULL, LOCATE_parser_prod, 2943);
+    }
+    CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  }
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser_prod___AType___empty_init(val_t p0, int* init_table){
+  int itpos99 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_AType].i;
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  if (init_table[itpos99]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 2948;
+  fra.me.meth = LOCATE_parser_prod___AType___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos99] = 1;
+  return;
+}
+void parser_prod___AType___init_atype(val_t p0, val_t p1, val_t p2, val_t p3, int* init_table){
+  int itpos100 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_AType].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  if (init_table[itpos100]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 2950;
+  fra.me.meth = LOCATE_parser_prod___AType___init_atype;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  fra.me.REG[3] = p3;
+  /* ./parser//parser_prod.nit:2956 */
+  CALL_parser_prod___AType___empty_init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  /* ./parser//parser_prod.nit:2957 */
+  ATTR_parser_nodes___AType____n_kwnullable(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./parser//parser_prod.nit:2958 */
+  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:2959 */
+    REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+      nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 2959);
+    }
+    CALL_parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  }
+  /* ./parser//parser_prod.nit:2961 */
+  REGB0 = TAG_Bool(fra.me.REG[2]!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Cast failed", NULL, LOCATE_parser_prod, 2961);
+  }
+  ATTR_parser_nodes___AType____n_id(fra.me.REG[0]) = fra.me.REG[2];
+  /* ./parser//parser_prod.nit:2962 */
+  REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+    nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 2962);
+  }
+  CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+  CALL_abstract_collection___Collection___iterate(fra.me.REG[3])(fra.me.REG[3], (&(fra.me)), ((fun_t)OC_parser_prod___AType___init_atype_1));
+  stack_frame_head = fra.me.prev;
+  init_table[itpos100] = 1;
+  return;
+}
+  void OC_parser_prod___AType___init_atype_1(struct stack_frame_t *closctx, val_t p0, struct stack_frame_t *closctx_param, fun_t clos_fun0){
+    struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+    val_t REGB0;
+    fun_t CREG[1];
+    val_t tmp;
+    /* ./parser//parser_prod.nit:2963 */
+    fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+    fra.me.file = LOCATE_parser_prod;
+    fra.me.line = 0;
+    fra.me.meth = LOCATE_parser_prod___AType___init_atype;
+    fra.me.has_broke = 0;
+    fra.me.REG_size = 2;
+    fra.me.REG[0] = NIT_NULL;
+    fra.me.REG[1] = NIT_NULL;
+    fra.me.closure_ctx = closctx_param;
+    fra.me.closure_funs = CREG;
+    fra.me.REG[0] = p0;
+    CREG[0] = clos_fun0;
+    /* ./parser//parser_prod.nit:2964 */
+    REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[0], COLOR_AType, ID_AType)) /*cast AType*/;
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      nit_abort("Assert failed", NULL, LOCATE_parser_prod, 2964);
+    }
+    /* ./parser//parser_prod.nit:2965 */
+    REGB0 = TAG_Bool(ATTR_parser_nodes___AType____n_types(closctx->REG[0])!=NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      nit_abort("Uninitialized attribute %s", "_n_types", LOCATE_parser_prod, 2965);
+    }
+    fra.me.REG[1] = ATTR_parser_nodes___AType____n_types(closctx->REG[0]);
+    CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+    /* ./parser//parser_prod.nit:2966 */
+    CALL_parser_prod___ANode___parent__eq(fra.me.REG[0])(fra.me.REG[0], closctx->REG[0]);
+    stack_frame_head = fra.me.prev;
+    return;
+  }
+void parser_prod___AType___replace_child(val_t p0, val_t p1, val_t p2){
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t REGB2;
+  val_t REGB3;
+  val_t REGB4;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 2970;
+  fra.me.meth = LOCATE_parser_prod___AType___replace_child;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  /* ./parser//parser_prod.nit:2972 */
+  fra.me.REG[3] = ATTR_parser_nodes___AType____n_kwnullable(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+      REGB0 = REGB1;
+    }
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:2973 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:2974 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 2974);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:2975 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_TKwnullable, ID_TKwnullable)) /*cast TKwnullable*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 2975);
+      }
+      /* ./parser//parser_prod.nit:2976 */
+      ATTR_parser_nodes___AType____n_kwnullable(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:2978 */
+      ATTR_parser_nodes___AType____n_kwnullable(fra.me.REG[0]) = NIT_NULL;
+    }
+    /* ./parser//parser_prod.nit:2980 */
+    goto label1;
+  }
+  /* ./parser//parser_prod.nit:2982 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AType____n_id(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_id", LOCATE_parser_prod, 2982);
+  }
+  fra.me.REG[3] = ATTR_parser_nodes___AType____n_id(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+    REGB0 = REGB1;
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:2983 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:2984 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 2984);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:2985 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_TClassid, ID_TClassid)) /*cast TClassid*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 2985);
+      }
+      /* ./parser//parser_prod.nit:2986 */
+      ATTR_parser_nodes___AType____n_id(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:2988 */
+      nit_abort("Aborted", NULL, LOCATE_parser_prod, 2988);
+    }
+    /* ./parser//parser_prod.nit:2990 */
+    goto label1;
+  }
+  /* ./parser//parser_prod.nit:2992 */
+  REGB0 = TAG_Int(0);
+  REGB1 = TAG_Bool(ATTR_parser_nodes___AType____n_types(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB1)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_types", LOCATE_parser_prod, 2992);
+  }
+  fra.me.REG[3] = ATTR_parser_nodes___AType____n_types(fra.me.REG[0]);
+  REGB1 = CALL_abstract_collection___Collection___length(fra.me.REG[3])(fra.me.REG[3]);
+  /* ./../lib/standard//kernel.nit:332 */
+  while(1) {
+    /* ./../lib/standard//kernel.nit:212 */
+    REGB2 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
+    /* ./../lib/standard//kernel.nit:332 */
+    if (UNTAG_Bool(REGB2)) {
+      /* ./parser//parser_prod.nit:2992 */
+      REGB2 = REGB0;
+      /* ./parser//parser_prod.nit:2993 */
+      REGB3 = TAG_Bool(ATTR_parser_nodes___AType____n_types(fra.me.REG[0])!=NIT_NULL);
+      if (UNTAG_Bool(REGB3)) {
+      } else {
+        nit_abort("Uninitialized attribute %s", "_n_types", LOCATE_parser_prod, 2993);
+      }
+      fra.me.REG[3] = ATTR_parser_nodes___AType____n_types(fra.me.REG[0]);
+      fra.me.REG[3] = CALL_abstract_collection___MapRead_____bra(fra.me.REG[3])(fra.me.REG[3], REGB2);
+      REGB3 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
+      if (UNTAG_Bool(REGB3)) {
+      } else {
+        REGB4 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+        if (UNTAG_Bool(REGB4)) {
+          REGB4 = TAG_Bool(false);
+          REGB3 = REGB4;
+        } else {
+          REGB4 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+          REGB3 = REGB4;
+        }
+      }
+      if (UNTAG_Bool(REGB3)) {
+        /* ./parser//parser_prod.nit:2994 */
+        REGB3 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+        if (UNTAG_Bool(REGB3)) {
+        } else {
+          REGB4 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+          if (UNTAG_Bool(REGB4)) {
+            REGB4 = TAG_Bool(false);
+            REGB3 = REGB4;
+          } else {
+            REGB4 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+            REGB3 = REGB4;
+          }
+        }
+        REGB3 = TAG_Bool(!UNTAG_Bool(REGB3));
+        if (UNTAG_Bool(REGB3)) {
+          /* ./parser//parser_prod.nit:2995 */
+          REGB3 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_AType, ID_AType)) /*cast AType*/;
+          if (UNTAG_Bool(REGB3)) {
+          } else {
+            nit_abort("Assert failed", NULL, LOCATE_parser_prod, 2995);
+          }
+          /* ./parser//parser_prod.nit:2996 */
+          REGB3 = TAG_Bool(ATTR_parser_nodes___AType____n_types(fra.me.REG[0])!=NIT_NULL);
+          if (UNTAG_Bool(REGB3)) {
+          } else {
+            nit_abort("Uninitialized attribute %s", "_n_types", LOCATE_parser_prod, 2996);
+          }
+          fra.me.REG[3] = ATTR_parser_nodes___AType____n_types(fra.me.REG[0]);
+          CALL_abstract_collection___Map_____braeq(fra.me.REG[3])(fra.me.REG[3], REGB2, fra.me.REG[2]);
+          /* ./parser//parser_prod.nit:2997 */
+          REGB3 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+          if (UNTAG_Bool(REGB3)) {
+            nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 2997);
+          }
+          CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+        } else {
+          /* ./parser//parser_prod.nit:2999 */
+          REGB3 = TAG_Bool(ATTR_parser_nodes___AType____n_types(fra.me.REG[0])!=NIT_NULL);
+          if (UNTAG_Bool(REGB3)) {
+          } else {
+            nit_abort("Uninitialized attribute %s", "_n_types", LOCATE_parser_prod, 2999);
+          }
+          fra.me.REG[3] = ATTR_parser_nodes___AType____n_types(fra.me.REG[0]);
+          CALL_abstract_collection___Map___remove_at(fra.me.REG[3])(fra.me.REG[3], REGB2);
+        }
+        /* ./parser//parser_prod.nit:3001 */
+        goto label1;
+      }
+      /* ./../lib/standard//kernel.nit:334 */
+      REGB2 = TAG_Int(1);
+      /* ./../lib/standard//kernel.nit:215 */
+      REGB2 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB2));
+      /* ./../lib/standard//kernel.nit:334 */
+      REGB0 = REGB2;
+    } else {
+      /* ./../lib/standard//kernel.nit:332 */
+      goto label2;
+    }
+  }
+  label2: while(0);
+  label1: while(0);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser_prod___AType___visit_all(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 3006;
+  fra.me.meth = LOCATE_parser_prod___AType___visit_all;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:3008 */
+  fra.me.REG[2] = ATTR_parser_nodes___AType____n_kwnullable(fra.me.REG[0]);
+  REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:3009 */
+    fra.me.REG[2] = ATTR_parser_nodes___AType____n_kwnullable(fra.me.REG[0]);
+    REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_TKwnullable, ID_TKwnullable)) /*cast TKwnullable*/;
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      nit_abort("Cast failed", NULL, LOCATE_parser_prod, 3009);
+    }
+    CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  }
+  /* ./parser//parser_prod.nit:3011 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AType____n_id(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_id", LOCATE_parser_prod, 3011);
+  }
+  fra.me.REG[2] = ATTR_parser_nodes___AType____n_id(fra.me.REG[0]);
+  CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser_prod.nit:3012 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AType____n_types(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_types", LOCATE_parser_prod, 3012);
+  }
+  fra.me.REG[0] = ATTR_parser_nodes___AType____n_types(fra.me.REG[0]);
+  CALL_abstract_collection___Collection___iterate(fra.me.REG[0])(fra.me.REG[0], (&(fra.me)), ((fun_t)OC_parser_prod___AType___visit_all_1));
+  stack_frame_head = fra.me.prev;
+  return;
+}
+  void OC_parser_prod___AType___visit_all_1(struct stack_frame_t *closctx, val_t p0, struct stack_frame_t *closctx_param, fun_t clos_fun0){
+    struct {struct stack_frame_t me;} fra;
+    fun_t CREG[1];
+    val_t tmp;
+    fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+    fra.me.file = LOCATE_parser_prod;
+    fra.me.line = 0;
+    fra.me.meth = LOCATE_parser_prod___AType___visit_all;
+    fra.me.has_broke = 0;
+    fra.me.REG_size = 1;
+    fra.me.REG[0] = NIT_NULL;
+    fra.me.closure_ctx = closctx_param;
+    fra.me.closure_funs = CREG;
+    fra.me.REG[0] = p0;
+    CREG[0] = clos_fun0;
+    /* ./parser//parser_prod.nit:3013 */
+    CALL_parser_prod___Visitor___enter_visit(closctx->REG[1])(closctx->REG[1], fra.me.REG[0]);
+    stack_frame_head = fra.me.prev;
+    return;
+  }
+void parser_prod___ALabel___empty_init(val_t p0, int* init_table){
+  int itpos101 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ALabel].i;
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  if (init_table[itpos101]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 3018;
+  fra.me.meth = LOCATE_parser_prod___ALabel___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos101] = 1;
+  return;
+}
+void parser_prod___ALabel___init_alabel(val_t p0, val_t p1, val_t p2, int* init_table){
+  int itpos102 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ALabel].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos102]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 3020;
+  fra.me.meth = LOCATE_parser_prod___ALabel___init_alabel;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  /* ./parser//parser_prod.nit:3025 */
+  CALL_parser_prod___ALabel___empty_init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  /* ./parser//parser_prod.nit:3026 */
+  REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Cast failed", NULL, LOCATE_parser_prod, 3026);
+  }
+  ATTR_parser_nodes___ALabel____n_kwlabel(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./parser//parser_prod.nit:3027 */
+  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+    nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 3027);
+  }
+  CALL_parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  /* ./parser//parser_prod.nit:3028 */
+  REGB0 = TAG_Bool(fra.me.REG[2]!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Cast failed", NULL, LOCATE_parser_prod, 3028);
+  }
+  ATTR_parser_nodes___ALabel____n_id(fra.me.REG[0]) = fra.me.REG[2];
+  /* ./parser//parser_prod.nit:3029 */
+  REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+    nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 3029);
+  }
+  CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  init_table[itpos102] = 1;
+  return;
+}
+void parser_prod___ALabel___replace_child(val_t p0, val_t p1, val_t p2){
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 3032;
+  fra.me.meth = LOCATE_parser_prod___ALabel___replace_child;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  /* ./parser//parser_prod.nit:3034 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ALabel____n_kwlabel(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_kwlabel", LOCATE_parser_prod, 3034);
+  }
+  fra.me.REG[3] = ATTR_parser_nodes___ALabel____n_kwlabel(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+    REGB0 = REGB1;
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:3035 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:3036 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 3036);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:3037 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_TKwlabel, ID_TKwlabel)) /*cast TKwlabel*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 3037);
+      }
+      /* ./parser//parser_prod.nit:3038 */
+      ATTR_parser_nodes___ALabel____n_kwlabel(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:3040 */
+      nit_abort("Aborted", NULL, LOCATE_parser_prod, 3040);
+    }
+    /* ./parser//parser_prod.nit:3042 */
+    goto label1;
+  }
+  /* ./parser//parser_prod.nit:3044 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ALabel____n_id(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_id", LOCATE_parser_prod, 3044);
+  }
+  fra.me.REG[3] = ATTR_parser_nodes___ALabel____n_id(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+    REGB0 = REGB1;
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:3045 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:3046 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 3046);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:3047 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_TId, ID_TId)) /*cast TId*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 3047);
+      }
+      /* ./parser//parser_prod.nit:3048 */
+      ATTR_parser_nodes___ALabel____n_id(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:3050 */
+      nit_abort("Aborted", NULL, LOCATE_parser_prod, 3050);
+    }
+    /* ./parser//parser_prod.nit:3052 */
+    goto label1;
+  }
+  label1: while(0);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser_prod___ALabel___visit_all(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 3056;
+  fra.me.meth = LOCATE_parser_prod___ALabel___visit_all;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:3058 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ALabel____n_kwlabel(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_kwlabel", LOCATE_parser_prod, 3058);
+  }
+  fra.me.REG[2] = ATTR_parser_nodes___ALabel____n_kwlabel(fra.me.REG[0]);
+  CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser_prod.nit:3059 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ALabel____n_id(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_id", LOCATE_parser_prod, 3059);
+  }
+  fra.me.REG[0] = ATTR_parser_nodes___ALabel____n_id(fra.me.REG[0]);
+  CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser_prod___ABlockExpr___empty_init(val_t p0, int* init_table){
+  int itpos103 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ABlockExpr].i;
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  if (init_table[itpos103]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 3063;
+  fra.me.meth = LOCATE_parser_prod___ABlockExpr___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos103] = 1;
+  return;
+}
+void parser_prod___ABlockExpr___init_ablockexpr(val_t p0, val_t p1, int* init_table){
+  int itpos104 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ABlockExpr].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  if (init_table[itpos104]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 3065;
+  fra.me.meth = LOCATE_parser_prod___ABlockExpr___init_ablockexpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:3069 */
+  CALL_parser_prod___ABlockExpr___empty_init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  CALL_abstract_collection___Collection___iterate(fra.me.REG[1])(fra.me.REG[1], (&(fra.me)), ((fun_t)OC_parser_prod___ABlockExpr___init_ablockexpr_1));
+  stack_frame_head = fra.me.prev;
+  init_table[itpos104] = 1;
+  return;
+}
+  void OC_parser_prod___ABlockExpr___init_ablockexpr_1(struct stack_frame_t *closctx, val_t p0, struct stack_frame_t *closctx_param, fun_t clos_fun0){
+    struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+    val_t REGB0;
+    fun_t CREG[1];
+    val_t tmp;
+    /* ./parser//parser_prod.nit:3070 */
+    fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+    fra.me.file = LOCATE_parser_prod;
+    fra.me.line = 0;
+    fra.me.meth = LOCATE_parser_prod___ABlockExpr___init_ablockexpr;
+    fra.me.has_broke = 0;
+    fra.me.REG_size = 2;
+    fra.me.REG[0] = NIT_NULL;
+    fra.me.REG[1] = NIT_NULL;
+    fra.me.closure_ctx = closctx_param;
+    fra.me.closure_funs = CREG;
+    fra.me.REG[0] = p0;
+    CREG[0] = clos_fun0;
+    /* ./parser//parser_prod.nit:3071 */
+    REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[0], COLOR_AExpr, ID_AExpr)) /*cast AExpr*/;
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      nit_abort("Assert failed", NULL, LOCATE_parser_prod, 3071);
+    }
+    /* ./parser//parser_prod.nit:3072 */
+    REGB0 = TAG_Bool(ATTR_parser_nodes___ABlockExpr____n_expr(closctx->REG[0])!=NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser_prod, 3072);
+    }
+    fra.me.REG[1] = ATTR_parser_nodes___ABlockExpr____n_expr(closctx->REG[0]);
+    CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+    /* ./parser//parser_prod.nit:3073 */
+    CALL_parser_prod___ANode___parent__eq(fra.me.REG[0])(fra.me.REG[0], closctx->REG[0]);
+    stack_frame_head = fra.me.prev;
+    return;
+  }
+void parser_prod___ABlockExpr___replace_child(val_t p0, val_t p1, val_t p2){
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t REGB2;
+  val_t REGB3;
+  val_t REGB4;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 3077;
+  fra.me.meth = LOCATE_parser_prod___ABlockExpr___replace_child;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  /* ./parser//parser_prod.nit:3079 */
+  REGB0 = TAG_Int(0);
+  REGB1 = TAG_Bool(ATTR_parser_nodes___ABlockExpr____n_expr(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB1)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser_prod, 3079);
+  }
+  fra.me.REG[3] = ATTR_parser_nodes___ABlockExpr____n_expr(fra.me.REG[0]);
+  REGB1 = CALL_abstract_collection___Collection___length(fra.me.REG[3])(fra.me.REG[3]);
+  /* ./../lib/standard//kernel.nit:332 */
+  while(1) {
+    /* ./../lib/standard//kernel.nit:212 */
+    REGB2 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
+    /* ./../lib/standard//kernel.nit:332 */
+    if (UNTAG_Bool(REGB2)) {
+      /* ./parser//parser_prod.nit:3079 */
+      REGB2 = REGB0;
+      /* ./parser//parser_prod.nit:3080 */
+      REGB3 = TAG_Bool(ATTR_parser_nodes___ABlockExpr____n_expr(fra.me.REG[0])!=NIT_NULL);
+      if (UNTAG_Bool(REGB3)) {
+      } else {
+        nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser_prod, 3080);
+      }
+      fra.me.REG[3] = ATTR_parser_nodes___ABlockExpr____n_expr(fra.me.REG[0]);
+      fra.me.REG[3] = CALL_abstract_collection___MapRead_____bra(fra.me.REG[3])(fra.me.REG[3], REGB2);
+      REGB3 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
+      if (UNTAG_Bool(REGB3)) {
+      } else {
+        REGB4 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+        if (UNTAG_Bool(REGB4)) {
+          REGB4 = TAG_Bool(false);
+          REGB3 = REGB4;
+        } else {
+          REGB4 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+          REGB3 = REGB4;
+        }
+      }
+      if (UNTAG_Bool(REGB3)) {
+        /* ./parser//parser_prod.nit:3081 */
+        REGB3 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+        if (UNTAG_Bool(REGB3)) {
+        } else {
+          REGB4 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+          if (UNTAG_Bool(REGB4)) {
+            REGB4 = TAG_Bool(false);
+            REGB3 = REGB4;
+          } else {
+            REGB4 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+            REGB3 = REGB4;
+          }
+        }
+        REGB3 = TAG_Bool(!UNTAG_Bool(REGB3));
+        if (UNTAG_Bool(REGB3)) {
+          /* ./parser//parser_prod.nit:3082 */
+          REGB3 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_AExpr, ID_AExpr)) /*cast AExpr*/;
+          if (UNTAG_Bool(REGB3)) {
+          } else {
+            nit_abort("Assert failed", NULL, LOCATE_parser_prod, 3082);
+          }
+          /* ./parser//parser_prod.nit:3083 */
+          REGB3 = TAG_Bool(ATTR_parser_nodes___ABlockExpr____n_expr(fra.me.REG[0])!=NIT_NULL);
+          if (UNTAG_Bool(REGB3)) {
+          } else {
+            nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser_prod, 3083);
+          }
+          fra.me.REG[3] = ATTR_parser_nodes___ABlockExpr____n_expr(fra.me.REG[0]);
+          CALL_abstract_collection___Map_____braeq(fra.me.REG[3])(fra.me.REG[3], REGB2, fra.me.REG[2]);
+          /* ./parser//parser_prod.nit:3084 */
+          REGB3 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+          if (UNTAG_Bool(REGB3)) {
+            nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 3084);
+          }
+          CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+        } else {
+          /* ./parser//parser_prod.nit:3086 */
+          REGB3 = TAG_Bool(ATTR_parser_nodes___ABlockExpr____n_expr(fra.me.REG[0])!=NIT_NULL);
+          if (UNTAG_Bool(REGB3)) {
+          } else {
+            nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser_prod, 3086);
+          }
+          fra.me.REG[3] = ATTR_parser_nodes___ABlockExpr____n_expr(fra.me.REG[0]);
+          CALL_abstract_collection___Map___remove_at(fra.me.REG[3])(fra.me.REG[3], REGB2);
+        }
+        /* ./parser//parser_prod.nit:3088 */
+        goto label1;
+      }
+      /* ./../lib/standard//kernel.nit:334 */
+      REGB2 = TAG_Int(1);
+      /* ./../lib/standard//kernel.nit:215 */
+      REGB2 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB2));
+      /* ./../lib/standard//kernel.nit:334 */
+      REGB0 = REGB2;
+    } else {
+      /* ./../lib/standard//kernel.nit:332 */
+      goto label2;
+    }
+  }
+  label2: while(0);
+  label1: while(0);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser_prod___ABlockExpr___visit_all(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 3093;
+  fra.me.meth = LOCATE_parser_prod___ABlockExpr___visit_all;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:3095 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ABlockExpr____n_expr(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser_prod, 3095);
+  }
+  fra.me.REG[0] = ATTR_parser_nodes___ABlockExpr____n_expr(fra.me.REG[0]);
+  CALL_abstract_collection___Collection___iterate(fra.me.REG[0])(fra.me.REG[0], (&(fra.me)), ((fun_t)OC_parser_prod___ABlockExpr___visit_all_1));
+  stack_frame_head = fra.me.prev;
+  return;
+}
+  void OC_parser_prod___ABlockExpr___visit_all_1(struct stack_frame_t *closctx, val_t p0, struct stack_frame_t *closctx_param, fun_t clos_fun0){
+    struct {struct stack_frame_t me;} fra;
+    fun_t CREG[1];
+    val_t tmp;
+    fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+    fra.me.file = LOCATE_parser_prod;
+    fra.me.line = 0;
+    fra.me.meth = LOCATE_parser_prod___ABlockExpr___visit_all;
+    fra.me.has_broke = 0;
+    fra.me.REG_size = 1;
+    fra.me.REG[0] = NIT_NULL;
+    fra.me.closure_ctx = closctx_param;
+    fra.me.closure_funs = CREG;
+    fra.me.REG[0] = p0;
+    CREG[0] = clos_fun0;
+    /* ./parser//parser_prod.nit:3096 */
+    CALL_parser_prod___Visitor___enter_visit(closctx->REG[1])(closctx->REG[1], fra.me.REG[0]);
+    stack_frame_head = fra.me.prev;
+    return;
+  }
+void parser_prod___AVardeclExpr___empty_init(val_t p0, int* init_table){
+  int itpos105 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_AVardeclExpr].i;
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  if (init_table[itpos105]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 3101;
+  fra.me.meth = LOCATE_parser_prod___AVardeclExpr___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos105] = 1;
+  return;
+}
+void parser_prod___AVardeclExpr___init_avardeclexpr(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4, val_t p5, int* init_table){
+  int itpos106 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_AVardeclExpr].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[5];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  if (init_table[itpos106]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 3103;
+  fra.me.meth = LOCATE_parser_prod___AVardeclExpr___init_avardeclexpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 6;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  fra.me.REG[3] = p3;
+  fra.me.REG[4] = p4;
+  fra.me.REG[5] = p5;
+  /* ./parser//parser_prod.nit:3111 */
+  CALL_parser_prod___AVardeclExpr___empty_init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  /* ./parser//parser_prod.nit:3112 */
+  REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Cast failed", NULL, LOCATE_parser_prod, 3112);
+  }
+  ATTR_parser_nodes___AVardeclExpr____n_kwvar(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./parser//parser_prod.nit:3113 */
+  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+    nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 3113);
+  }
+  CALL_parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  /* ./parser//parser_prod.nit:3114 */
+  REGB0 = TAG_Bool(fra.me.REG[2]!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Cast failed", NULL, LOCATE_parser_prod, 3114);
+  }
+  ATTR_parser_nodes___AVardeclExpr____n_id(fra.me.REG[0]) = fra.me.REG[2];
+  /* ./parser//parser_prod.nit:3115 */
+  REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+    nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 3115);
+  }
+  CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+  /* ./parser//parser_prod.nit:3116 */
+  ATTR_parser_nodes___AVardeclExpr____n_type(fra.me.REG[0]) = fra.me.REG[3];
+  /* ./parser//parser_prod.nit:3117 */
+  REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:3118 */
+    REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+      nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 3118);
+    }
+    CALL_parser_prod___ANode___parent__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[0]);
+  }
+  /* ./parser//parser_prod.nit:3120 */
+  ATTR_parser_nodes___AVardeclExpr____n_assign(fra.me.REG[0]) = fra.me.REG[4];
+  /* ./parser//parser_prod.nit:3121 */
+  REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:3122 */
+    REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+      nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 3122);
+    }
+    CALL_parser_prod___ANode___parent__eq(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[0]);
+  }
+  /* ./parser//parser_prod.nit:3124 */
+  ATTR_parser_nodes___AVardeclExpr____n_expr(fra.me.REG[0]) = fra.me.REG[5];
+  /* ./parser//parser_prod.nit:3125 */
+  REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[5])(fra.me.REG[5], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:3126 */
+    REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+      nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 3126);
+    }
+    CALL_parser_prod___ANode___parent__eq(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[0]);
+  }
+  stack_frame_head = fra.me.prev;
+  init_table[itpos106] = 1;
+  return;
+}
+void parser_prod___AVardeclExpr___replace_child(val_t p0, val_t p1, val_t p2){
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 3130;
+  fra.me.meth = LOCATE_parser_prod___AVardeclExpr___replace_child;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  /* ./parser//parser_prod.nit:3132 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AVardeclExpr____n_kwvar(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_kwvar", LOCATE_parser_prod, 3132);
+  }
+  fra.me.REG[3] = ATTR_parser_nodes___AVardeclExpr____n_kwvar(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+    REGB0 = REGB1;
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:3133 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:3134 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 3134);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:3135 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_TKwvar, ID_TKwvar)) /*cast TKwvar*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 3135);
+      }
+      /* ./parser//parser_prod.nit:3136 */
+      ATTR_parser_nodes___AVardeclExpr____n_kwvar(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:3138 */
+      nit_abort("Aborted", NULL, LOCATE_parser_prod, 3138);
+    }
+    /* ./parser//parser_prod.nit:3140 */
+    goto label1;
+  }
+  /* ./parser//parser_prod.nit:3142 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AVardeclExpr____n_id(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_id", LOCATE_parser_prod, 3142);
+  }
+  fra.me.REG[3] = ATTR_parser_nodes___AVardeclExpr____n_id(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+    REGB0 = REGB1;
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:3143 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:3144 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 3144);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:3145 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_TId, ID_TId)) /*cast TId*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 3145);
+      }
+      /* ./parser//parser_prod.nit:3146 */
+      ATTR_parser_nodes___AVardeclExpr____n_id(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:3148 */
+      nit_abort("Aborted", NULL, LOCATE_parser_prod, 3148);
+    }
+    /* ./parser//parser_prod.nit:3150 */
+    goto label1;
+  }
+  /* ./parser//parser_prod.nit:3152 */
+  fra.me.REG[3] = ATTR_parser_nodes___AVardeclExpr____n_type(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+      REGB0 = REGB1;
+    }
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:3153 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:3154 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 3154);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:3155 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_AType, ID_AType)) /*cast AType*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 3155);
+      }
+      /* ./parser//parser_prod.nit:3156 */
+      ATTR_parser_nodes___AVardeclExpr____n_type(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:3158 */
+      ATTR_parser_nodes___AVardeclExpr____n_type(fra.me.REG[0]) = NIT_NULL;
+    }
+    /* ./parser//parser_prod.nit:3160 */
+    goto label1;
+  }
+  /* ./parser//parser_prod.nit:3162 */
+  fra.me.REG[3] = ATTR_parser_nodes___AVardeclExpr____n_assign(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+      REGB0 = REGB1;
+    }
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:3163 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:3164 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 3164);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:3165 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_TAssign, ID_TAssign)) /*cast TAssign*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 3165);
+      }
+      /* ./parser//parser_prod.nit:3166 */
+      ATTR_parser_nodes___AVardeclExpr____n_assign(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:3168 */
+      ATTR_parser_nodes___AVardeclExpr____n_assign(fra.me.REG[0]) = NIT_NULL;
+    }
+    /* ./parser//parser_prod.nit:3170 */
+    goto label1;
+  }
+  /* ./parser//parser_prod.nit:3172 */
+  fra.me.REG[3] = ATTR_parser_nodes___AVardeclExpr____n_expr(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+      REGB0 = REGB1;
+    }
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:3173 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:3174 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 3174);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:3175 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_AExpr, ID_AExpr)) /*cast AExpr*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 3175);
+      }
+      /* ./parser//parser_prod.nit:3176 */
+      ATTR_parser_nodes___AVardeclExpr____n_expr(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:3178 */
+      ATTR_parser_nodes___AVardeclExpr____n_expr(fra.me.REG[0]) = NIT_NULL;
+    }
+    /* ./parser//parser_prod.nit:3180 */
+    goto label1;
+  }
+  label1: while(0);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser_prod___AVardeclExpr___visit_all(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 3184;
+  fra.me.meth = LOCATE_parser_prod___AVardeclExpr___visit_all;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:3186 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AVardeclExpr____n_kwvar(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_kwvar", LOCATE_parser_prod, 3186);
+  }
+  fra.me.REG[2] = ATTR_parser_nodes___AVardeclExpr____n_kwvar(fra.me.REG[0]);
+  CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser_prod.nit:3187 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AVardeclExpr____n_id(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_id", LOCATE_parser_prod, 3187);
+  }
+  fra.me.REG[2] = ATTR_parser_nodes___AVardeclExpr____n_id(fra.me.REG[0]);
+  CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser_prod.nit:3188 */
+  fra.me.REG[2] = ATTR_parser_nodes___AVardeclExpr____n_type(fra.me.REG[0]);
+  REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:3189 */
+    fra.me.REG[2] = ATTR_parser_nodes___AVardeclExpr____n_type(fra.me.REG[0]);
+    REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_AType, ID_AType)) /*cast AType*/;
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      nit_abort("Cast failed", NULL, LOCATE_parser_prod, 3189);
+    }
+    CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  }
+  /* ./parser//parser_prod.nit:3191 */
+  fra.me.REG[2] = ATTR_parser_nodes___AVardeclExpr____n_assign(fra.me.REG[0]);
+  REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:3192 */
+    fra.me.REG[2] = ATTR_parser_nodes___AVardeclExpr____n_assign(fra.me.REG[0]);
+    REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_TAssign, ID_TAssign)) /*cast TAssign*/;
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      nit_abort("Cast failed", NULL, LOCATE_parser_prod, 3192);
+    }
+    CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  }
+  /* ./parser//parser_prod.nit:3194 */
+  fra.me.REG[2] = ATTR_parser_nodes___AVardeclExpr____n_expr(fra.me.REG[0]);
+  REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:3195 */
+    fra.me.REG[0] = ATTR_parser_nodes___AVardeclExpr____n_expr(fra.me.REG[0]);
+    REGB0 = TAG_Bool((fra.me.REG[0]!=NIT_NULL) && VAL_ISA(fra.me.REG[0], COLOR_AExpr, ID_AExpr)) /*cast AExpr*/;
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      nit_abort("Cast failed", NULL, LOCATE_parser_prod, 3195);
+    }
+    CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  }
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser_prod___AReturnExpr___empty_init(val_t p0, int* init_table){
+  int itpos107 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_AReturnExpr].i;
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  if (init_table[itpos107]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 3200;
+  fra.me.meth = LOCATE_parser_prod___AReturnExpr___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos107] = 1;
+  return;
+}
+void parser_prod___AReturnExpr___init_areturnexpr(val_t p0, val_t p1, val_t p2, int* init_table){
+  int itpos108 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_AReturnExpr].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  if (init_table[itpos108]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 3202;
+  fra.me.meth = LOCATE_parser_prod___AReturnExpr___init_areturnexpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  /* ./parser//parser_prod.nit:3207 */
+  CALL_parser_prod___AReturnExpr___empty_init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  /* ./parser//parser_prod.nit:3208 */
+  ATTR_parser_nodes___AReturnExpr____n_kwreturn(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./parser//parser_prod.nit:3209 */
+  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:3210 */
+    REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+      nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 3210);
+    }
+    CALL_parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  }
+  /* ./parser//parser_prod.nit:3212 */
+  ATTR_parser_nodes___AReturnExpr____n_expr(fra.me.REG[0]) = fra.me.REG[2];
+  /* ./parser//parser_prod.nit:3213 */
+  REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:3214 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+      nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 3214);
+    }
+    CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+  }
+  stack_frame_head = fra.me.prev;
+  init_table[itpos108] = 1;
+  return;
+}
+void parser_prod___AReturnExpr___replace_child(val_t p0, val_t p1, val_t p2){
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 3218;
+  fra.me.meth = LOCATE_parser_prod___AReturnExpr___replace_child;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  /* ./parser//parser_prod.nit:3220 */
+  fra.me.REG[3] = ATTR_parser_nodes___AReturnExpr____n_kwreturn(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+      REGB0 = REGB1;
+    }
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:3221 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:3222 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 3222);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:3223 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_TKwreturn, ID_TKwreturn)) /*cast TKwreturn*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 3223);
+      }
+      /* ./parser//parser_prod.nit:3224 */
+      ATTR_parser_nodes___AReturnExpr____n_kwreturn(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:3226 */
+      ATTR_parser_nodes___AReturnExpr____n_kwreturn(fra.me.REG[0]) = NIT_NULL;
+    }
+    /* ./parser//parser_prod.nit:3228 */
+    goto label1;
+  }
+  /* ./parser//parser_prod.nit:3230 */
+  fra.me.REG[3] = ATTR_parser_nodes___AReturnExpr____n_expr(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+      REGB0 = REGB1;
+    }
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:3231 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:3232 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 3232);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:3233 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_AExpr, ID_AExpr)) /*cast AExpr*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 3233);
+      }
+      /* ./parser//parser_prod.nit:3234 */
+      ATTR_parser_nodes___AReturnExpr____n_expr(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:3236 */
+      ATTR_parser_nodes___AReturnExpr____n_expr(fra.me.REG[0]) = NIT_NULL;
+    }
+    /* ./parser//parser_prod.nit:3238 */
+    goto label1;
+  }
+  label1: while(0);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser_prod___AReturnExpr___visit_all(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 3242;
+  fra.me.meth = LOCATE_parser_prod___AReturnExpr___visit_all;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:3244 */
+  fra.me.REG[2] = ATTR_parser_nodes___AReturnExpr____n_kwreturn(fra.me.REG[0]);
+  REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:3245 */
+    fra.me.REG[2] = ATTR_parser_nodes___AReturnExpr____n_kwreturn(fra.me.REG[0]);
+    REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_TKwreturn, ID_TKwreturn)) /*cast TKwreturn*/;
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      nit_abort("Cast failed", NULL, LOCATE_parser_prod, 3245);
+    }
+    CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  }
+  /* ./parser//parser_prod.nit:3247 */
+  fra.me.REG[2] = ATTR_parser_nodes___AReturnExpr____n_expr(fra.me.REG[0]);
+  REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:3248 */
+    fra.me.REG[0] = ATTR_parser_nodes___AReturnExpr____n_expr(fra.me.REG[0]);
+    REGB0 = TAG_Bool((fra.me.REG[0]!=NIT_NULL) && VAL_ISA(fra.me.REG[0], COLOR_AExpr, ID_AExpr)) /*cast AExpr*/;
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      nit_abort("Cast failed", NULL, LOCATE_parser_prod, 3248);
+    }
+    CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  }
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser_prod___ABreakExpr___empty_init(val_t p0, int* init_table){
+  int itpos109 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ABreakExpr].i;
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  if (init_table[itpos109]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 3253;
+  fra.me.meth = LOCATE_parser_prod___ABreakExpr___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos109] = 1;
+  return;
+}
+void parser_prod___ABreakExpr___init_abreakexpr(val_t p0, val_t p1, val_t p2, val_t p3, int* init_table){
+  int itpos110 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ABreakExpr].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  if (init_table[itpos110]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 3255;
+  fra.me.meth = LOCATE_parser_prod___ABreakExpr___init_abreakexpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  fra.me.REG[3] = p3;
+  /* ./parser//parser_prod.nit:3261 */
+  CALL_parser_prod___ABreakExpr___empty_init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  /* ./parser//parser_prod.nit:3262 */
+  REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Cast failed", NULL, LOCATE_parser_prod, 3262);
+  }
+  ATTR_parser_nodes___ABreakExpr____n_kwbreak(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./parser//parser_prod.nit:3263 */
+  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+    nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 3263);
+  }
+  CALL_parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  /* ./parser//parser_prod.nit:3264 */
+  ATTR_parser_nodes___ALabelable____n_label(fra.me.REG[0]) = fra.me.REG[2];
+  /* ./parser//parser_prod.nit:3265 */
+  REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:3266 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+      nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 3266);
+    }
+    CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+  }
+  /* ./parser//parser_prod.nit:3268 */
+  ATTR_parser_nodes___ABreakExpr____n_expr(fra.me.REG[0]) = fra.me.REG[3];
+  /* ./parser//parser_prod.nit:3269 */
+  REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:3270 */
+    REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+      nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 3270);
+    }
+    CALL_parser_prod___ANode___parent__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[0]);
+  }
+  stack_frame_head = fra.me.prev;
+  init_table[itpos110] = 1;
+  return;
+}
+void parser_prod___ABreakExpr___replace_child(val_t p0, val_t p1, val_t p2){
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 3274;
+  fra.me.meth = LOCATE_parser_prod___ABreakExpr___replace_child;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  /* ./parser//parser_prod.nit:3276 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ABreakExpr____n_kwbreak(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_kwbreak", LOCATE_parser_prod, 3276);
+  }
+  fra.me.REG[3] = ATTR_parser_nodes___ABreakExpr____n_kwbreak(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+    REGB0 = REGB1;
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:3277 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:3278 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 3278);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:3279 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_TKwbreak, ID_TKwbreak)) /*cast TKwbreak*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 3279);
+      }
+      /* ./parser//parser_prod.nit:3280 */
+      ATTR_parser_nodes___ABreakExpr____n_kwbreak(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:3282 */
+      nit_abort("Aborted", NULL, LOCATE_parser_prod, 3282);
+    }
+    /* ./parser//parser_prod.nit:3284 */
+    goto label1;
+  }
+  /* ./parser//parser_prod.nit:3286 */
+  fra.me.REG[3] = ATTR_parser_nodes___ALabelable____n_label(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+      REGB0 = REGB1;
+    }
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:3287 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:3288 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 3288);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:3289 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_ALabel, ID_ALabel)) /*cast ALabel*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 3289);
+      }
+      /* ./parser//parser_prod.nit:3290 */
+      ATTR_parser_nodes___ALabelable____n_label(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:3292 */
+      ATTR_parser_nodes___ALabelable____n_label(fra.me.REG[0]) = NIT_NULL;
+    }
+    /* ./parser//parser_prod.nit:3294 */
+    goto label1;
+  }
+  /* ./parser//parser_prod.nit:3296 */
+  fra.me.REG[3] = ATTR_parser_nodes___ABreakExpr____n_expr(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+      REGB0 = REGB1;
+    }
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:3297 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:3298 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 3298);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:3299 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_AExpr, ID_AExpr)) /*cast AExpr*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 3299);
+      }
+      /* ./parser//parser_prod.nit:3300 */
+      ATTR_parser_nodes___ABreakExpr____n_expr(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:3302 */
+      ATTR_parser_nodes___ABreakExpr____n_expr(fra.me.REG[0]) = NIT_NULL;
+    }
+    /* ./parser//parser_prod.nit:3304 */
+    goto label1;
+  }
+  label1: while(0);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser_prod___ABreakExpr___visit_all(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 3308;
+  fra.me.meth = LOCATE_parser_prod___ABreakExpr___visit_all;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:3310 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ABreakExpr____n_kwbreak(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_kwbreak", LOCATE_parser_prod, 3310);
+  }
+  fra.me.REG[2] = ATTR_parser_nodes___ABreakExpr____n_kwbreak(fra.me.REG[0]);
+  CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser_prod.nit:3311 */
+  fra.me.REG[2] = ATTR_parser_nodes___ALabelable____n_label(fra.me.REG[0]);
+  REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:3312 */
+    fra.me.REG[2] = ATTR_parser_nodes___ALabelable____n_label(fra.me.REG[0]);
+    REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_ALabel, ID_ALabel)) /*cast ALabel*/;
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      nit_abort("Cast failed", NULL, LOCATE_parser_prod, 3312);
+    }
+    CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  }
+  /* ./parser//parser_prod.nit:3314 */
+  fra.me.REG[2] = ATTR_parser_nodes___ABreakExpr____n_expr(fra.me.REG[0]);
+  REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:3315 */
+    fra.me.REG[0] = ATTR_parser_nodes___ABreakExpr____n_expr(fra.me.REG[0]);
+    REGB0 = TAG_Bool((fra.me.REG[0]!=NIT_NULL) && VAL_ISA(fra.me.REG[0], COLOR_AExpr, ID_AExpr)) /*cast AExpr*/;
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      nit_abort("Cast failed", NULL, LOCATE_parser_prod, 3315);
+    }
+    CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  }
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser_prod___AAbortExpr___empty_init(val_t p0, int* init_table){
+  int itpos111 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_AAbortExpr].i;
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  if (init_table[itpos111]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 3320;
+  fra.me.meth = LOCATE_parser_prod___AAbortExpr___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos111] = 1;
+  return;
+}
+void parser_prod___AAbortExpr___init_aabortexpr(val_t p0, val_t p1, int* init_table){
+  int itpos112 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_AAbortExpr].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos112]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 3322;
+  fra.me.meth = LOCATE_parser_prod___AAbortExpr___init_aabortexpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:3326 */
+  CALL_parser_prod___AAbortExpr___empty_init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  /* ./parser//parser_prod.nit:3327 */
+  REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Cast failed", NULL, LOCATE_parser_prod, 3327);
+  }
+  ATTR_parser_nodes___AAbortExpr____n_kwabort(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./parser//parser_prod.nit:3328 */
+  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+    nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 3328);
+  }
+  CALL_parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  init_table[itpos112] = 1;
+  return;
+}
+void parser_prod___AAbortExpr___replace_child(val_t p0, val_t p1, val_t p2){
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 3331;
+  fra.me.meth = LOCATE_parser_prod___AAbortExpr___replace_child;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  /* ./parser//parser_prod.nit:3333 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AAbortExpr____n_kwabort(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_kwabort", LOCATE_parser_prod, 3333);
+  }
+  fra.me.REG[3] = ATTR_parser_nodes___AAbortExpr____n_kwabort(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+    REGB0 = REGB1;
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:3334 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:3335 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 3335);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:3336 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_TKwabort, ID_TKwabort)) /*cast TKwabort*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 3336);
+      }
+      /* ./parser//parser_prod.nit:3337 */
+      ATTR_parser_nodes___AAbortExpr____n_kwabort(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:3339 */
+      nit_abort("Aborted", NULL, LOCATE_parser_prod, 3339);
+    }
+    /* ./parser//parser_prod.nit:3341 */
+    goto label1;
+  }
+  label1: while(0);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser_prod___AAbortExpr___visit_all(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 3345;
+  fra.me.meth = LOCATE_parser_prod___AAbortExpr___visit_all;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:3347 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AAbortExpr____n_kwabort(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_kwabort", LOCATE_parser_prod, 3347);
+  }
+  fra.me.REG[0] = ATTR_parser_nodes___AAbortExpr____n_kwabort(fra.me.REG[0]);
+  CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser_prod___AContinueExpr___empty_init(val_t p0, int* init_table){
+  int itpos113 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_AContinueExpr].i;
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  if (init_table[itpos113]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 3351;
+  fra.me.meth = LOCATE_parser_prod___AContinueExpr___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos113] = 1;
+  return;
+}
+void parser_prod___AContinueExpr___init_acontinueexpr(val_t p0, val_t p1, val_t p2, val_t p3, int* init_table){
+  int itpos114 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_AContinueExpr].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  if (init_table[itpos114]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 3353;
+  fra.me.meth = LOCATE_parser_prod___AContinueExpr___init_acontinueexpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  fra.me.REG[3] = p3;
+  /* ./parser//parser_prod.nit:3359 */
+  CALL_parser_prod___AContinueExpr___empty_init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  /* ./parser//parser_prod.nit:3360 */
+  ATTR_parser_nodes___AContinueExpr____n_kwcontinue(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./parser//parser_prod.nit:3361 */
+  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:3362 */
+    REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+      nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 3362);
+    }
+    CALL_parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  }
+  /* ./parser//parser_prod.nit:3364 */
+  ATTR_parser_nodes___ALabelable____n_label(fra.me.REG[0]) = fra.me.REG[2];
+  /* ./parser//parser_prod.nit:3365 */
+  REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:3366 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+      nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 3366);
+    }
+    CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+  }
+  /* ./parser//parser_prod.nit:3368 */
+  ATTR_parser_nodes___AContinueExpr____n_expr(fra.me.REG[0]) = fra.me.REG[3];
+  /* ./parser//parser_prod.nit:3369 */
+  REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:3370 */
+    REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+      nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 3370);
+    }
+    CALL_parser_prod___ANode___parent__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[0]);
+  }
+  stack_frame_head = fra.me.prev;
+  init_table[itpos114] = 1;
+  return;
+}
+void parser_prod___AContinueExpr___replace_child(val_t p0, val_t p1, val_t p2){
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 3374;
+  fra.me.meth = LOCATE_parser_prod___AContinueExpr___replace_child;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  /* ./parser//parser_prod.nit:3376 */
+  fra.me.REG[3] = ATTR_parser_nodes___AContinueExpr____n_kwcontinue(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+      REGB0 = REGB1;
+    }
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:3377 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:3378 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 3378);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:3379 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_TKwcontinue, ID_TKwcontinue)) /*cast TKwcontinue*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 3379);
+      }
+      /* ./parser//parser_prod.nit:3380 */
+      ATTR_parser_nodes___AContinueExpr____n_kwcontinue(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:3382 */
+      ATTR_parser_nodes___AContinueExpr____n_kwcontinue(fra.me.REG[0]) = NIT_NULL;
+    }
+    /* ./parser//parser_prod.nit:3384 */
+    goto label1;
+  }
+  /* ./parser//parser_prod.nit:3386 */
+  fra.me.REG[3] = ATTR_parser_nodes___ALabelable____n_label(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+      REGB0 = REGB1;
+    }
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:3387 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:3388 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 3388);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:3389 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_ALabel, ID_ALabel)) /*cast ALabel*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 3389);
+      }
+      /* ./parser//parser_prod.nit:3390 */
+      ATTR_parser_nodes___ALabelable____n_label(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:3392 */
+      ATTR_parser_nodes___ALabelable____n_label(fra.me.REG[0]) = NIT_NULL;
+    }
+    /* ./parser//parser_prod.nit:3394 */
+    goto label1;
+  }
+  /* ./parser//parser_prod.nit:3396 */
+  fra.me.REG[3] = ATTR_parser_nodes___AContinueExpr____n_expr(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+      REGB0 = REGB1;
+    }
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:3397 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:3398 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 3398);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:3399 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_AExpr, ID_AExpr)) /*cast AExpr*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 3399);
+      }
+      /* ./parser//parser_prod.nit:3400 */
+      ATTR_parser_nodes___AContinueExpr____n_expr(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:3402 */
+      ATTR_parser_nodes___AContinueExpr____n_expr(fra.me.REG[0]) = NIT_NULL;
+    }
+    /* ./parser//parser_prod.nit:3404 */
+    goto label1;
+  }
+  label1: while(0);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser_prod___AContinueExpr___visit_all(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 3408;
+  fra.me.meth = LOCATE_parser_prod___AContinueExpr___visit_all;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:3410 */
+  fra.me.REG[2] = ATTR_parser_nodes___AContinueExpr____n_kwcontinue(fra.me.REG[0]);
+  REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:3411 */
+    fra.me.REG[2] = ATTR_parser_nodes___AContinueExpr____n_kwcontinue(fra.me.REG[0]);
+    REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_TKwcontinue, ID_TKwcontinue)) /*cast TKwcontinue*/;
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      nit_abort("Cast failed", NULL, LOCATE_parser_prod, 3411);
+    }
+    CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  }
+  /* ./parser//parser_prod.nit:3413 */
+  fra.me.REG[2] = ATTR_parser_nodes___ALabelable____n_label(fra.me.REG[0]);
+  REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:3414 */
+    fra.me.REG[2] = ATTR_parser_nodes___ALabelable____n_label(fra.me.REG[0]);
+    REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_ALabel, ID_ALabel)) /*cast ALabel*/;
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      nit_abort("Cast failed", NULL, LOCATE_parser_prod, 3414);
+    }
+    CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  }
+  /* ./parser//parser_prod.nit:3416 */
+  fra.me.REG[2] = ATTR_parser_nodes___AContinueExpr____n_expr(fra.me.REG[0]);
+  REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:3417 */
+    fra.me.REG[0] = ATTR_parser_nodes___AContinueExpr____n_expr(fra.me.REG[0]);
+    REGB0 = TAG_Bool((fra.me.REG[0]!=NIT_NULL) && VAL_ISA(fra.me.REG[0], COLOR_AExpr, ID_AExpr)) /*cast AExpr*/;
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      nit_abort("Cast failed", NULL, LOCATE_parser_prod, 3417);
+    }
+    CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  }
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser_prod___ADoExpr___empty_init(val_t p0, int* init_table){
+  int itpos115 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ADoExpr].i;
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  if (init_table[itpos115]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 3422;
+  fra.me.meth = LOCATE_parser_prod___ADoExpr___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos115] = 1;
+  return;
+}
+void parser_prod___ADoExpr___init_adoexpr(val_t p0, val_t p1, val_t p2, val_t p3, int* init_table){
+  int itpos116 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ADoExpr].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  if (init_table[itpos116]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 3424;
+  fra.me.meth = LOCATE_parser_prod___ADoExpr___init_adoexpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  fra.me.REG[3] = p3;
+  /* ./parser//parser_prod.nit:3430 */
+  CALL_parser_prod___ADoExpr___empty_init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  /* ./parser//parser_prod.nit:3431 */
+  REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Cast failed", NULL, LOCATE_parser_prod, 3431);
+  }
+  ATTR_parser_nodes___ADoExpr____n_kwdo(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./parser//parser_prod.nit:3432 */
+  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+    nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 3432);
+  }
+  CALL_parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  /* ./parser//parser_prod.nit:3433 */
+  ATTR_parser_nodes___ADoExpr____n_block(fra.me.REG[0]) = fra.me.REG[2];
+  /* ./parser//parser_prod.nit:3434 */
+  REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:3435 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+      nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 3435);
+    }
+    CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+  }
+  /* ./parser//parser_prod.nit:3437 */
+  ATTR_parser_nodes___ALabelable____n_label(fra.me.REG[0]) = fra.me.REG[3];
+  /* ./parser//parser_prod.nit:3438 */
+  REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:3439 */
+    REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+      nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 3439);
+    }
+    CALL_parser_prod___ANode___parent__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[0]);
+  }
+  stack_frame_head = fra.me.prev;
+  init_table[itpos116] = 1;
+  return;
+}
+void parser_prod___ADoExpr___replace_child(val_t p0, val_t p1, val_t p2){
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 3443;
+  fra.me.meth = LOCATE_parser_prod___ADoExpr___replace_child;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  /* ./parser//parser_prod.nit:3445 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ADoExpr____n_kwdo(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_kwdo", LOCATE_parser_prod, 3445);
+  }
+  fra.me.REG[3] = ATTR_parser_nodes___ADoExpr____n_kwdo(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+    REGB0 = REGB1;
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:3446 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:3447 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 3447);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:3448 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_TKwdo, ID_TKwdo)) /*cast TKwdo*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 3448);
+      }
+      /* ./parser//parser_prod.nit:3449 */
+      ATTR_parser_nodes___ADoExpr____n_kwdo(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:3451 */
+      nit_abort("Aborted", NULL, LOCATE_parser_prod, 3451);
+    }
+    /* ./parser//parser_prod.nit:3453 */
+    goto label1;
+  }
+  /* ./parser//parser_prod.nit:3455 */
+  fra.me.REG[3] = ATTR_parser_nodes___ADoExpr____n_block(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+      REGB0 = REGB1;
+    }
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:3456 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:3457 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 3457);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:3458 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_AExpr, ID_AExpr)) /*cast AExpr*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 3458);
+      }
+      /* ./parser//parser_prod.nit:3459 */
+      ATTR_parser_nodes___ADoExpr____n_block(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:3461 */
+      ATTR_parser_nodes___ADoExpr____n_block(fra.me.REG[0]) = NIT_NULL;
+    }
+    /* ./parser//parser_prod.nit:3463 */
+    goto label1;
+  }
+  /* ./parser//parser_prod.nit:3465 */
+  fra.me.REG[3] = ATTR_parser_nodes___ALabelable____n_label(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+      REGB0 = REGB1;
+    }
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:3466 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:3467 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 3467);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:3468 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_ALabel, ID_ALabel)) /*cast ALabel*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 3468);
+      }
+      /* ./parser//parser_prod.nit:3469 */
+      ATTR_parser_nodes___ALabelable____n_label(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:3471 */
+      ATTR_parser_nodes___ALabelable____n_label(fra.me.REG[0]) = NIT_NULL;
+    }
+    /* ./parser//parser_prod.nit:3473 */
+    goto label1;
+  }
+  label1: while(0);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser_prod___ADoExpr___visit_all(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 3477;
+  fra.me.meth = LOCATE_parser_prod___ADoExpr___visit_all;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:3479 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ADoExpr____n_kwdo(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_kwdo", LOCATE_parser_prod, 3479);
+  }
+  fra.me.REG[2] = ATTR_parser_nodes___ADoExpr____n_kwdo(fra.me.REG[0]);
+  CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser_prod.nit:3480 */
+  fra.me.REG[2] = ATTR_parser_nodes___ADoExpr____n_block(fra.me.REG[0]);
+  REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:3481 */
+    fra.me.REG[2] = ATTR_parser_nodes___ADoExpr____n_block(fra.me.REG[0]);
+    REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_AExpr, ID_AExpr)) /*cast AExpr*/;
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      nit_abort("Cast failed", NULL, LOCATE_parser_prod, 3481);
+    }
+    CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  }
+  /* ./parser//parser_prod.nit:3483 */
+  fra.me.REG[2] = ATTR_parser_nodes___ALabelable____n_label(fra.me.REG[0]);
+  REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:3484 */
+    fra.me.REG[0] = ATTR_parser_nodes___ALabelable____n_label(fra.me.REG[0]);
+    REGB0 = TAG_Bool((fra.me.REG[0]!=NIT_NULL) && VAL_ISA(fra.me.REG[0], COLOR_ALabel, ID_ALabel)) /*cast ALabel*/;
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      nit_abort("Cast failed", NULL, LOCATE_parser_prod, 3484);
+    }
+    CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  }
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser_prod___AIfExpr___empty_init(val_t p0, int* init_table){
+  int itpos117 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_AIfExpr].i;
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  if (init_table[itpos117]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 3489;
+  fra.me.meth = LOCATE_parser_prod___AIfExpr___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos117] = 1;
+  return;
+}
+void parser_prod___AIfExpr___init_aifexpr(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4, int* init_table){
+  int itpos118 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_AIfExpr].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  if (init_table[itpos118]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 3491;
+  fra.me.meth = LOCATE_parser_prod___AIfExpr___init_aifexpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  fra.me.REG[3] = p3;
+  fra.me.REG[4] = p4;
+  /* ./parser//parser_prod.nit:3498 */
+  CALL_parser_prod___AIfExpr___empty_init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  /* ./parser//parser_prod.nit:3499 */
+  REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Cast failed", NULL, LOCATE_parser_prod, 3499);
+  }
+  ATTR_parser_nodes___AIfExpr____n_kwif(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./parser//parser_prod.nit:3500 */
+  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+    nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 3500);
+  }
+  CALL_parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  /* ./parser//parser_prod.nit:3501 */
+  REGB0 = TAG_Bool(fra.me.REG[2]!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Cast failed", NULL, LOCATE_parser_prod, 3501);
+  }
+  ATTR_parser_nodes___AIfExpr____n_expr(fra.me.REG[0]) = fra.me.REG[2];
+  /* ./parser//parser_prod.nit:3502 */
+  REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+    nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 3502);
+  }
+  CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+  /* ./parser//parser_prod.nit:3503 */
+  ATTR_parser_nodes___AIfExpr____n_then(fra.me.REG[0]) = fra.me.REG[3];
+  /* ./parser//parser_prod.nit:3504 */
+  REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:3505 */
+    REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+      nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 3505);
+    }
+    CALL_parser_prod___ANode___parent__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[0]);
+  }
+  /* ./parser//parser_prod.nit:3507 */
+  ATTR_parser_nodes___AIfExpr____n_else(fra.me.REG[0]) = fra.me.REG[4];
+  /* ./parser//parser_prod.nit:3508 */
+  REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:3509 */
+    REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+      nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 3509);
+    }
+    CALL_parser_prod___ANode___parent__eq(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[0]);
+  }
+  stack_frame_head = fra.me.prev;
+  init_table[itpos118] = 1;
+  return;
+}
+void parser_prod___AIfExpr___replace_child(val_t p0, val_t p1, val_t p2){
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 3513;
+  fra.me.meth = LOCATE_parser_prod___AIfExpr___replace_child;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  /* ./parser//parser_prod.nit:3515 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AIfExpr____n_kwif(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_kwif", LOCATE_parser_prod, 3515);
+  }
+  fra.me.REG[3] = ATTR_parser_nodes___AIfExpr____n_kwif(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+    REGB0 = REGB1;
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:3516 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:3517 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 3517);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:3518 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_TKwif, ID_TKwif)) /*cast TKwif*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 3518);
+      }
+      /* ./parser//parser_prod.nit:3519 */
+      ATTR_parser_nodes___AIfExpr____n_kwif(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:3521 */
+      nit_abort("Aborted", NULL, LOCATE_parser_prod, 3521);
+    }
+    /* ./parser//parser_prod.nit:3523 */
+    goto label1;
+  }
+  /* ./parser//parser_prod.nit:3525 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AIfExpr____n_expr(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser_prod, 3525);
+  }
+  fra.me.REG[3] = ATTR_parser_nodes___AIfExpr____n_expr(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+    REGB0 = REGB1;
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:3526 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:3527 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 3527);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:3528 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_AExpr, ID_AExpr)) /*cast AExpr*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 3528);
+      }
+      /* ./parser//parser_prod.nit:3529 */
+      ATTR_parser_nodes___AIfExpr____n_expr(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:3531 */
+      nit_abort("Aborted", NULL, LOCATE_parser_prod, 3531);
+    }
+    /* ./parser//parser_prod.nit:3533 */
+    goto label1;
+  }
+  /* ./parser//parser_prod.nit:3535 */
+  fra.me.REG[3] = ATTR_parser_nodes___AIfExpr____n_then(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+      REGB0 = REGB1;
+    }
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:3536 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:3537 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 3537);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:3538 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_AExpr, ID_AExpr)) /*cast AExpr*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 3538);
+      }
+      /* ./parser//parser_prod.nit:3539 */
+      ATTR_parser_nodes___AIfExpr____n_then(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:3541 */
+      ATTR_parser_nodes___AIfExpr____n_then(fra.me.REG[0]) = NIT_NULL;
+    }
+    /* ./parser//parser_prod.nit:3543 */
+    goto label1;
+  }
+  /* ./parser//parser_prod.nit:3545 */
+  fra.me.REG[3] = ATTR_parser_nodes___AIfExpr____n_else(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+      REGB0 = REGB1;
+    }
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:3546 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:3547 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 3547);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:3548 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_AExpr, ID_AExpr)) /*cast AExpr*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 3548);
+      }
+      /* ./parser//parser_prod.nit:3549 */
+      ATTR_parser_nodes___AIfExpr____n_else(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:3551 */
+      ATTR_parser_nodes___AIfExpr____n_else(fra.me.REG[0]) = NIT_NULL;
+    }
+    /* ./parser//parser_prod.nit:3553 */
+    goto label1;
+  }
+  label1: while(0);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser_prod___AIfExpr___visit_all(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 3557;
+  fra.me.meth = LOCATE_parser_prod___AIfExpr___visit_all;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:3559 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AIfExpr____n_kwif(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_kwif", LOCATE_parser_prod, 3559);
+  }
+  fra.me.REG[2] = ATTR_parser_nodes___AIfExpr____n_kwif(fra.me.REG[0]);
+  CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser_prod.nit:3560 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AIfExpr____n_expr(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser_prod, 3560);
+  }
+  fra.me.REG[2] = ATTR_parser_nodes___AIfExpr____n_expr(fra.me.REG[0]);
+  CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser_prod.nit:3561 */
+  fra.me.REG[2] = ATTR_parser_nodes___AIfExpr____n_then(fra.me.REG[0]);
+  REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:3562 */
+    fra.me.REG[2] = ATTR_parser_nodes___AIfExpr____n_then(fra.me.REG[0]);
+    REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_AExpr, ID_AExpr)) /*cast AExpr*/;
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      nit_abort("Cast failed", NULL, LOCATE_parser_prod, 3562);
+    }
+    CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  }
+  /* ./parser//parser_prod.nit:3564 */
+  fra.me.REG[2] = ATTR_parser_nodes___AIfExpr____n_else(fra.me.REG[0]);
+  REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:3565 */
+    fra.me.REG[0] = ATTR_parser_nodes___AIfExpr____n_else(fra.me.REG[0]);
+    REGB0 = TAG_Bool((fra.me.REG[0]!=NIT_NULL) && VAL_ISA(fra.me.REG[0], COLOR_AExpr, ID_AExpr)) /*cast AExpr*/;
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      nit_abort("Cast failed", NULL, LOCATE_parser_prod, 3565);
+    }
+    CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  }
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser_prod___AIfexprExpr___empty_init(val_t p0, int* init_table){
+  int itpos119 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_AIfexprExpr].i;
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  if (init_table[itpos119]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 3570;
+  fra.me.meth = LOCATE_parser_prod___AIfexprExpr___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos119] = 1;
+  return;
+}
+void parser_prod___AIfexprExpr___init_aifexprexpr(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4, val_t p5, val_t p6, int* init_table){
+  int itpos120 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_AIfexprExpr].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[6];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos120]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 3572;
+  fra.me.meth = LOCATE_parser_prod___AIfexprExpr___init_aifexprexpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 7;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  fra.me.REG[3] = p3;
+  fra.me.REG[4] = p4;
+  fra.me.REG[5] = p5;
+  fra.me.REG[6] = p6;
+  /* ./parser//parser_prod.nit:3581 */
+  CALL_parser_prod___AIfexprExpr___empty_init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  /* ./parser//parser_prod.nit:3582 */
+  REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Cast failed", NULL, LOCATE_parser_prod, 3582);
+  }
+  ATTR_parser_nodes___AIfexprExpr____n_kwif(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./parser//parser_prod.nit:3583 */
+  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+    nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 3583);
+  }
+  CALL_parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  /* ./parser//parser_prod.nit:3584 */
+  REGB0 = TAG_Bool(fra.me.REG[2]!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Cast failed", NULL, LOCATE_parser_prod, 3584);
+  }
+  ATTR_parser_nodes___AIfexprExpr____n_expr(fra.me.REG[0]) = fra.me.REG[2];
+  /* ./parser//parser_prod.nit:3585 */
+  REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+    nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 3585);
+  }
+  CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+  /* ./parser//parser_prod.nit:3586 */
+  REGB0 = TAG_Bool(fra.me.REG[3]!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Cast failed", NULL, LOCATE_parser_prod, 3586);
+  }
+  ATTR_parser_nodes___AIfexprExpr____n_kwthen(fra.me.REG[0]) = fra.me.REG[3];
+  /* ./parser//parser_prod.nit:3587 */
+  REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+    nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 3587);
+  }
+  CALL_parser_prod___ANode___parent__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[0]);
+  /* ./parser//parser_prod.nit:3588 */
+  REGB0 = TAG_Bool(fra.me.REG[4]!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Cast failed", NULL, LOCATE_parser_prod, 3588);
+  }
+  ATTR_parser_nodes___AIfexprExpr____n_then(fra.me.REG[0]) = fra.me.REG[4];
+  /* ./parser//parser_prod.nit:3589 */
+  REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+    nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 3589);
+  }
+  CALL_parser_prod___ANode___parent__eq(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[0]);
+  /* ./parser//parser_prod.nit:3590 */
+  REGB0 = TAG_Bool(fra.me.REG[5]!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Cast failed", NULL, LOCATE_parser_prod, 3590);
+  }
+  ATTR_parser_nodes___AIfexprExpr____n_kwelse(fra.me.REG[0]) = fra.me.REG[5];
+  /* ./parser//parser_prod.nit:3591 */
+  REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+    nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 3591);
+  }
+  CALL_parser_prod___ANode___parent__eq(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[0]);
+  /* ./parser//parser_prod.nit:3592 */
+  REGB0 = TAG_Bool(fra.me.REG[6]!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Cast failed", NULL, LOCATE_parser_prod, 3592);
+  }
+  ATTR_parser_nodes___AIfexprExpr____n_else(fra.me.REG[0]) = fra.me.REG[6];
+  /* ./parser//parser_prod.nit:3593 */
+  REGB0 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+    nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 3593);
+  }
+  CALL_parser_prod___ANode___parent__eq(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  init_table[itpos120] = 1;
+  return;
+}
+void parser_prod___AIfexprExpr___replace_child(val_t p0, val_t p1, val_t p2){
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 3596;
+  fra.me.meth = LOCATE_parser_prod___AIfexprExpr___replace_child;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  /* ./parser//parser_prod.nit:3598 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AIfexprExpr____n_kwif(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_kwif", LOCATE_parser_prod, 3598);
+  }
+  fra.me.REG[3] = ATTR_parser_nodes___AIfexprExpr____n_kwif(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+    REGB0 = REGB1;
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:3599 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:3600 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 3600);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:3601 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_TKwif, ID_TKwif)) /*cast TKwif*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 3601);
+      }
+      /* ./parser//parser_prod.nit:3602 */
+      ATTR_parser_nodes___AIfexprExpr____n_kwif(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:3604 */
+      nit_abort("Aborted", NULL, LOCATE_parser_prod, 3604);
+    }
+    /* ./parser//parser_prod.nit:3606 */
+    goto label1;
+  }
+  /* ./parser//parser_prod.nit:3608 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AIfexprExpr____n_expr(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser_prod, 3608);
+  }
+  fra.me.REG[3] = ATTR_parser_nodes___AIfexprExpr____n_expr(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+    REGB0 = REGB1;
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:3609 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:3610 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 3610);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:3611 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_AExpr, ID_AExpr)) /*cast AExpr*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 3611);
+      }
+      /* ./parser//parser_prod.nit:3612 */
+      ATTR_parser_nodes___AIfexprExpr____n_expr(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:3614 */
+      nit_abort("Aborted", NULL, LOCATE_parser_prod, 3614);
+    }
+    /* ./parser//parser_prod.nit:3616 */
+    goto label1;
+  }
+  /* ./parser//parser_prod.nit:3618 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AIfexprExpr____n_kwthen(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_kwthen", LOCATE_parser_prod, 3618);
+  }
+  fra.me.REG[3] = ATTR_parser_nodes___AIfexprExpr____n_kwthen(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+    REGB0 = REGB1;
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:3619 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:3620 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 3620);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:3621 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_TKwthen, ID_TKwthen)) /*cast TKwthen*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 3621);
+      }
+      /* ./parser//parser_prod.nit:3622 */
+      ATTR_parser_nodes___AIfexprExpr____n_kwthen(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:3624 */
+      nit_abort("Aborted", NULL, LOCATE_parser_prod, 3624);
+    }
+    /* ./parser//parser_prod.nit:3626 */
+    goto label1;
+  }
+  /* ./parser//parser_prod.nit:3628 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AIfexprExpr____n_then(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_then", LOCATE_parser_prod, 3628);
+  }
+  fra.me.REG[3] = ATTR_parser_nodes___AIfexprExpr____n_then(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+    REGB0 = REGB1;
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:3629 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:3630 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 3630);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:3631 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_AExpr, ID_AExpr)) /*cast AExpr*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 3631);
+      }
+      /* ./parser//parser_prod.nit:3632 */
+      ATTR_parser_nodes___AIfexprExpr____n_then(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:3634 */
+      nit_abort("Aborted", NULL, LOCATE_parser_prod, 3634);
+    }
+    /* ./parser//parser_prod.nit:3636 */
+    goto label1;
+  }
+  /* ./parser//parser_prod.nit:3638 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AIfexprExpr____n_kwelse(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_kwelse", LOCATE_parser_prod, 3638);
+  }
+  fra.me.REG[3] = ATTR_parser_nodes___AIfexprExpr____n_kwelse(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+    REGB0 = REGB1;
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:3639 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:3640 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 3640);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:3641 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_TKwelse, ID_TKwelse)) /*cast TKwelse*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 3641);
+      }
+      /* ./parser//parser_prod.nit:3642 */
+      ATTR_parser_nodes___AIfexprExpr____n_kwelse(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:3644 */
+      nit_abort("Aborted", NULL, LOCATE_parser_prod, 3644);
+    }
+    /* ./parser//parser_prod.nit:3646 */
+    goto label1;
+  }
+  /* ./parser//parser_prod.nit:3648 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AIfexprExpr____n_else(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_else", LOCATE_parser_prod, 3648);
+  }
+  fra.me.REG[3] = ATTR_parser_nodes___AIfexprExpr____n_else(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+    REGB0 = REGB1;
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:3649 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:3650 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 3650);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:3651 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_AExpr, ID_AExpr)) /*cast AExpr*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 3651);
+      }
+      /* ./parser//parser_prod.nit:3652 */
+      ATTR_parser_nodes___AIfexprExpr____n_else(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:3654 */
+      nit_abort("Aborted", NULL, LOCATE_parser_prod, 3654);
+    }
+    /* ./parser//parser_prod.nit:3656 */
+    goto label1;
+  }
+  label1: while(0);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser_prod___AIfexprExpr___visit_all(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 3660;
+  fra.me.meth = LOCATE_parser_prod___AIfexprExpr___visit_all;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:3662 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AIfexprExpr____n_kwif(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_kwif", LOCATE_parser_prod, 3662);
+  }
+  fra.me.REG[2] = ATTR_parser_nodes___AIfexprExpr____n_kwif(fra.me.REG[0]);
+  CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser_prod.nit:3663 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AIfexprExpr____n_expr(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser_prod, 3663);
+  }
+  fra.me.REG[2] = ATTR_parser_nodes___AIfexprExpr____n_expr(fra.me.REG[0]);
+  CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser_prod.nit:3664 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AIfexprExpr____n_kwthen(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_kwthen", LOCATE_parser_prod, 3664);
+  }
+  fra.me.REG[2] = ATTR_parser_nodes___AIfexprExpr____n_kwthen(fra.me.REG[0]);
+  CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser_prod.nit:3665 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AIfexprExpr____n_then(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_then", LOCATE_parser_prod, 3665);
+  }
+  fra.me.REG[2] = ATTR_parser_nodes___AIfexprExpr____n_then(fra.me.REG[0]);
+  CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser_prod.nit:3666 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AIfexprExpr____n_kwelse(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_kwelse", LOCATE_parser_prod, 3666);
+  }
+  fra.me.REG[2] = ATTR_parser_nodes___AIfexprExpr____n_kwelse(fra.me.REG[0]);
+  CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser_prod.nit:3667 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AIfexprExpr____n_else(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_else", LOCATE_parser_prod, 3667);
+  }
+  fra.me.REG[0] = ATTR_parser_nodes___AIfexprExpr____n_else(fra.me.REG[0]);
+  CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser_prod___AWhileExpr___empty_init(val_t p0, int* init_table){
+  int itpos121 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_AWhileExpr].i;
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  if (init_table[itpos121]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 3671;
+  fra.me.meth = LOCATE_parser_prod___AWhileExpr___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos121] = 1;
+  return;
+}
+void parser_prod___AWhileExpr___init_awhileexpr(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4, val_t p5, int* init_table){
+  int itpos122 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_AWhileExpr].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[5];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  if (init_table[itpos122]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 3673;
+  fra.me.meth = LOCATE_parser_prod___AWhileExpr___init_awhileexpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 6;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  fra.me.REG[3] = p3;
+  fra.me.REG[4] = p4;
+  fra.me.REG[5] = p5;
+  /* ./parser//parser_prod.nit:3681 */
+  CALL_parser_prod___AWhileExpr___empty_init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  /* ./parser//parser_prod.nit:3682 */
+  REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Cast failed", NULL, LOCATE_parser_prod, 3682);
+  }
+  ATTR_parser_nodes___AWhileExpr____n_kwwhile(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./parser//parser_prod.nit:3683 */
+  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+    nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 3683);
+  }
+  CALL_parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  /* ./parser//parser_prod.nit:3684 */
+  REGB0 = TAG_Bool(fra.me.REG[2]!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Cast failed", NULL, LOCATE_parser_prod, 3684);
+  }
+  ATTR_parser_nodes___AWhileExpr____n_expr(fra.me.REG[0]) = fra.me.REG[2];
+  /* ./parser//parser_prod.nit:3685 */
+  REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+    nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 3685);
+  }
+  CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+  /* ./parser//parser_prod.nit:3686 */
+  REGB0 = TAG_Bool(fra.me.REG[3]!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Cast failed", NULL, LOCATE_parser_prod, 3686);
+  }
+  ATTR_parser_nodes___AWhileExpr____n_kwdo(fra.me.REG[0]) = fra.me.REG[3];
+  /* ./parser//parser_prod.nit:3687 */
+  REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+    nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 3687);
+  }
+  CALL_parser_prod___ANode___parent__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[0]);
+  /* ./parser//parser_prod.nit:3688 */
+  ATTR_parser_nodes___AWhileExpr____n_block(fra.me.REG[0]) = fra.me.REG[4];
+  /* ./parser//parser_prod.nit:3689 */
+  REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:3690 */
+    REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+      nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 3690);
+    }
+    CALL_parser_prod___ANode___parent__eq(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[0]);
+  }
+  /* ./parser//parser_prod.nit:3692 */
+  ATTR_parser_nodes___ALabelable____n_label(fra.me.REG[0]) = fra.me.REG[5];
+  /* ./parser//parser_prod.nit:3693 */
+  REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[5])(fra.me.REG[5], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:3694 */
+    REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+      nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 3694);
+    }
+    CALL_parser_prod___ANode___parent__eq(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[0]);
+  }
+  stack_frame_head = fra.me.prev;
+  init_table[itpos122] = 1;
+  return;
+}
+void parser_prod___AWhileExpr___replace_child(val_t p0, val_t p1, val_t p2){
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 3698;
+  fra.me.meth = LOCATE_parser_prod___AWhileExpr___replace_child;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  /* ./parser//parser_prod.nit:3700 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AWhileExpr____n_kwwhile(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_kwwhile", LOCATE_parser_prod, 3700);
+  }
+  fra.me.REG[3] = ATTR_parser_nodes___AWhileExpr____n_kwwhile(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+    REGB0 = REGB1;
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:3701 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:3702 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 3702);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:3703 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_TKwwhile, ID_TKwwhile)) /*cast TKwwhile*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 3703);
+      }
+      /* ./parser//parser_prod.nit:3704 */
+      ATTR_parser_nodes___AWhileExpr____n_kwwhile(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:3706 */
+      nit_abort("Aborted", NULL, LOCATE_parser_prod, 3706);
+    }
+    /* ./parser//parser_prod.nit:3708 */
+    goto label1;
+  }
+  /* ./parser//parser_prod.nit:3710 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AWhileExpr____n_expr(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser_prod, 3710);
+  }
+  fra.me.REG[3] = ATTR_parser_nodes___AWhileExpr____n_expr(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+    REGB0 = REGB1;
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:3711 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:3712 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 3712);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:3713 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_AExpr, ID_AExpr)) /*cast AExpr*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 3713);
+      }
+      /* ./parser//parser_prod.nit:3714 */
+      ATTR_parser_nodes___AWhileExpr____n_expr(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:3716 */
+      nit_abort("Aborted", NULL, LOCATE_parser_prod, 3716);
+    }
+    /* ./parser//parser_prod.nit:3718 */
+    goto label1;
+  }
+  /* ./parser//parser_prod.nit:3720 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AWhileExpr____n_kwdo(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_kwdo", LOCATE_parser_prod, 3720);
+  }
+  fra.me.REG[3] = ATTR_parser_nodes___AWhileExpr____n_kwdo(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+    REGB0 = REGB1;
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:3721 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:3722 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 3722);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:3723 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_TKwdo, ID_TKwdo)) /*cast TKwdo*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 3723);
+      }
+      /* ./parser//parser_prod.nit:3724 */
+      ATTR_parser_nodes___AWhileExpr____n_kwdo(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:3726 */
+      nit_abort("Aborted", NULL, LOCATE_parser_prod, 3726);
+    }
+    /* ./parser//parser_prod.nit:3728 */
+    goto label1;
+  }
+  /* ./parser//parser_prod.nit:3730 */
+  fra.me.REG[3] = ATTR_parser_nodes___AWhileExpr____n_block(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+      REGB0 = REGB1;
+    }
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:3731 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:3732 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 3732);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:3733 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_AExpr, ID_AExpr)) /*cast AExpr*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 3733);
+      }
+      /* ./parser//parser_prod.nit:3734 */
+      ATTR_parser_nodes___AWhileExpr____n_block(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:3736 */
+      ATTR_parser_nodes___AWhileExpr____n_block(fra.me.REG[0]) = NIT_NULL;
+    }
+    /* ./parser//parser_prod.nit:3738 */
+    goto label1;
+  }
+  /* ./parser//parser_prod.nit:3740 */
+  fra.me.REG[3] = ATTR_parser_nodes___ALabelable____n_label(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+      REGB0 = REGB1;
+    }
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:3741 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:3742 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 3742);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:3743 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_ALabel, ID_ALabel)) /*cast ALabel*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 3743);
+      }
+      /* ./parser//parser_prod.nit:3744 */
+      ATTR_parser_nodes___ALabelable____n_label(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:3746 */
+      ATTR_parser_nodes___ALabelable____n_label(fra.me.REG[0]) = NIT_NULL;
+    }
+    /* ./parser//parser_prod.nit:3748 */
+    goto label1;
+  }
+  label1: while(0);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser_prod___AWhileExpr___visit_all(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 3752;
+  fra.me.meth = LOCATE_parser_prod___AWhileExpr___visit_all;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:3754 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AWhileExpr____n_kwwhile(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_kwwhile", LOCATE_parser_prod, 3754);
+  }
+  fra.me.REG[2] = ATTR_parser_nodes___AWhileExpr____n_kwwhile(fra.me.REG[0]);
+  CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser_prod.nit:3755 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AWhileExpr____n_expr(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser_prod, 3755);
+  }
+  fra.me.REG[2] = ATTR_parser_nodes___AWhileExpr____n_expr(fra.me.REG[0]);
+  CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser_prod.nit:3756 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AWhileExpr____n_kwdo(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_kwdo", LOCATE_parser_prod, 3756);
+  }
+  fra.me.REG[2] = ATTR_parser_nodes___AWhileExpr____n_kwdo(fra.me.REG[0]);
+  CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser_prod.nit:3757 */
+  fra.me.REG[2] = ATTR_parser_nodes___AWhileExpr____n_block(fra.me.REG[0]);
+  REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:3758 */
+    fra.me.REG[2] = ATTR_parser_nodes___AWhileExpr____n_block(fra.me.REG[0]);
+    REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_AExpr, ID_AExpr)) /*cast AExpr*/;
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      nit_abort("Cast failed", NULL, LOCATE_parser_prod, 3758);
+    }
+    CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  }
+  /* ./parser//parser_prod.nit:3760 */
+  fra.me.REG[2] = ATTR_parser_nodes___ALabelable____n_label(fra.me.REG[0]);
+  REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:3761 */
+    fra.me.REG[0] = ATTR_parser_nodes___ALabelable____n_label(fra.me.REG[0]);
+    REGB0 = TAG_Bool((fra.me.REG[0]!=NIT_NULL) && VAL_ISA(fra.me.REG[0], COLOR_ALabel, ID_ALabel)) /*cast ALabel*/;
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      nit_abort("Cast failed", NULL, LOCATE_parser_prod, 3761);
+    }
+    CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  }
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser_prod___ALoopExpr___empty_init(val_t p0, int* init_table){
+  int itpos123 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ALoopExpr].i;
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  if (init_table[itpos123]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 3766;
+  fra.me.meth = LOCATE_parser_prod___ALoopExpr___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos123] = 1;
+  return;
+}
+void parser_prod___ALoopExpr___init_aloopexpr(val_t p0, val_t p1, val_t p2, val_t p3, int* init_table){
+  int itpos124 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ALoopExpr].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  if (init_table[itpos124]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 3768;
+  fra.me.meth = LOCATE_parser_prod___ALoopExpr___init_aloopexpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  fra.me.REG[3] = p3;
+  /* ./parser//parser_prod.nit:3774 */
+  CALL_parser_prod___ALoopExpr___empty_init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  /* ./parser//parser_prod.nit:3775 */
+  REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Cast failed", NULL, LOCATE_parser_prod, 3775);
+  }
+  ATTR_parser_nodes___ALoopExpr____n_kwloop(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./parser//parser_prod.nit:3776 */
+  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+    nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 3776);
+  }
+  CALL_parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  /* ./parser//parser_prod.nit:3777 */
+  ATTR_parser_nodes___ALoopExpr____n_block(fra.me.REG[0]) = fra.me.REG[2];
+  /* ./parser//parser_prod.nit:3778 */
+  REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:3779 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+      nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 3779);
+    }
+    CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+  }
+  /* ./parser//parser_prod.nit:3781 */
+  ATTR_parser_nodes___ALabelable____n_label(fra.me.REG[0]) = fra.me.REG[3];
+  /* ./parser//parser_prod.nit:3782 */
+  REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:3783 */
+    REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+      nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 3783);
+    }
+    CALL_parser_prod___ANode___parent__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[0]);
+  }
+  stack_frame_head = fra.me.prev;
+  init_table[itpos124] = 1;
+  return;
+}
+void parser_prod___ALoopExpr___replace_child(val_t p0, val_t p1, val_t p2){
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 3787;
+  fra.me.meth = LOCATE_parser_prod___ALoopExpr___replace_child;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  /* ./parser//parser_prod.nit:3789 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ALoopExpr____n_kwloop(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_kwloop", LOCATE_parser_prod, 3789);
+  }
+  fra.me.REG[3] = ATTR_parser_nodes___ALoopExpr____n_kwloop(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+    REGB0 = REGB1;
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:3790 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:3791 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 3791);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:3792 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_TKwloop, ID_TKwloop)) /*cast TKwloop*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 3792);
+      }
+      /* ./parser//parser_prod.nit:3793 */
+      ATTR_parser_nodes___ALoopExpr____n_kwloop(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:3795 */
+      nit_abort("Aborted", NULL, LOCATE_parser_prod, 3795);
+    }
+    /* ./parser//parser_prod.nit:3797 */
+    goto label1;
+  }
+  /* ./parser//parser_prod.nit:3799 */
+  fra.me.REG[3] = ATTR_parser_nodes___ALoopExpr____n_block(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+      REGB0 = REGB1;
+    }
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:3800 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:3801 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 3801);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:3802 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_AExpr, ID_AExpr)) /*cast AExpr*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 3802);
+      }
+      /* ./parser//parser_prod.nit:3803 */
+      ATTR_parser_nodes___ALoopExpr____n_block(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:3805 */
+      ATTR_parser_nodes___ALoopExpr____n_block(fra.me.REG[0]) = NIT_NULL;
+    }
+    /* ./parser//parser_prod.nit:3807 */
+    goto label1;
+  }
+  /* ./parser//parser_prod.nit:3809 */
+  fra.me.REG[3] = ATTR_parser_nodes___ALabelable____n_label(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+      REGB0 = REGB1;
+    }
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:3810 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:3811 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 3811);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:3812 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_ALabel, ID_ALabel)) /*cast ALabel*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 3812);
+      }
+      /* ./parser//parser_prod.nit:3813 */
+      ATTR_parser_nodes___ALabelable____n_label(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:3815 */
+      ATTR_parser_nodes___ALabelable____n_label(fra.me.REG[0]) = NIT_NULL;
+    }
+    /* ./parser//parser_prod.nit:3817 */
+    goto label1;
+  }
+  label1: while(0);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser_prod___ALoopExpr___visit_all(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 3821;
+  fra.me.meth = LOCATE_parser_prod___ALoopExpr___visit_all;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:3823 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ALoopExpr____n_kwloop(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_kwloop", LOCATE_parser_prod, 3823);
+  }
+  fra.me.REG[2] = ATTR_parser_nodes___ALoopExpr____n_kwloop(fra.me.REG[0]);
+  CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser_prod.nit:3824 */
+  fra.me.REG[2] = ATTR_parser_nodes___ALoopExpr____n_block(fra.me.REG[0]);
+  REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:3825 */
+    fra.me.REG[2] = ATTR_parser_nodes___ALoopExpr____n_block(fra.me.REG[0]);
+    REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_AExpr, ID_AExpr)) /*cast AExpr*/;
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      nit_abort("Cast failed", NULL, LOCATE_parser_prod, 3825);
+    }
+    CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  }
+  /* ./parser//parser_prod.nit:3827 */
+  fra.me.REG[2] = ATTR_parser_nodes___ALabelable____n_label(fra.me.REG[0]);
+  REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:3828 */
+    fra.me.REG[0] = ATTR_parser_nodes___ALabelable____n_label(fra.me.REG[0]);
+    REGB0 = TAG_Bool((fra.me.REG[0]!=NIT_NULL) && VAL_ISA(fra.me.REG[0], COLOR_ALabel, ID_ALabel)) /*cast ALabel*/;
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      nit_abort("Cast failed", NULL, LOCATE_parser_prod, 3828);
+    }
+    CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  }
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser_prod___AForExpr___empty_init(val_t p0, int* init_table){
+  int itpos125 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_AForExpr].i;
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  if (init_table[itpos125]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 3833;
+  fra.me.meth = LOCATE_parser_prod___AForExpr___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos125] = 1;
+  return;
+}
+void parser_prod___AForExpr___init_aforexpr(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4, val_t p5, val_t p6, int* init_table){
+  int itpos126 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_AForExpr].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[6];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  if (init_table[itpos126]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 3835;
+  fra.me.meth = LOCATE_parser_prod___AForExpr___init_aforexpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 7;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  fra.me.REG[3] = p3;
+  fra.me.REG[4] = p4;
+  fra.me.REG[5] = p5;
+  fra.me.REG[6] = p6;
+  /* ./parser//parser_prod.nit:3844 */
+  CALL_parser_prod___AForExpr___empty_init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  /* ./parser//parser_prod.nit:3845 */
+  REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Cast failed", NULL, LOCATE_parser_prod, 3845);
+  }
+  ATTR_parser_nodes___AForExpr____n_kwfor(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./parser//parser_prod.nit:3846 */
+  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+    nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 3846);
+  }
+  CALL_parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  /* ./parser//parser_prod.nit:3847 */
+  REGB0 = TAG_Bool(fra.me.REG[2]!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Cast failed", NULL, LOCATE_parser_prod, 3847);
+  }
+  ATTR_parser_nodes___AForExpr____n_id(fra.me.REG[0]) = fra.me.REG[2];
+  /* ./parser//parser_prod.nit:3848 */
+  REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+    nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 3848);
+  }
+  CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+  /* ./parser//parser_prod.nit:3849 */
+  REGB0 = TAG_Bool(fra.me.REG[3]!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Cast failed", NULL, LOCATE_parser_prod, 3849);
+  }
+  ATTR_parser_nodes___AForExpr____n_expr(fra.me.REG[0]) = fra.me.REG[3];
+  /* ./parser//parser_prod.nit:3850 */
+  REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+    nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 3850);
+  }
+  CALL_parser_prod___ANode___parent__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[0]);
+  /* ./parser//parser_prod.nit:3851 */
+  REGB0 = TAG_Bool(fra.me.REG[4]!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Cast failed", NULL, LOCATE_parser_prod, 3851);
+  }
+  ATTR_parser_nodes___AForExpr____n_kwdo(fra.me.REG[0]) = fra.me.REG[4];
+  /* ./parser//parser_prod.nit:3852 */
+  REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+    nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 3852);
+  }
+  CALL_parser_prod___ANode___parent__eq(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[0]);
+  /* ./parser//parser_prod.nit:3853 */
+  ATTR_parser_nodes___AForExpr____n_block(fra.me.REG[0]) = fra.me.REG[5];
+  /* ./parser//parser_prod.nit:3854 */
+  REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[5])(fra.me.REG[5], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:3855 */
+    REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+      nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 3855);
+    }
+    CALL_parser_prod___ANode___parent__eq(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[0]);
+  }
+  /* ./parser//parser_prod.nit:3857 */
+  ATTR_parser_nodes___ALabelable____n_label(fra.me.REG[0]) = fra.me.REG[6];
+  /* ./parser//parser_prod.nit:3858 */
+  REGB0 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[6])(fra.me.REG[6], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:3859 */
+    REGB0 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+      nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 3859);
+    }
+    CALL_parser_prod___ANode___parent__eq(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[0]);
+  }
+  stack_frame_head = fra.me.prev;
+  init_table[itpos126] = 1;
+  return;
+}
+void parser_prod___AForExpr___replace_child(val_t p0, val_t p1, val_t p2){
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 3863;
+  fra.me.meth = LOCATE_parser_prod___AForExpr___replace_child;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  /* ./parser//parser_prod.nit:3865 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AForExpr____n_kwfor(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_kwfor", LOCATE_parser_prod, 3865);
+  }
+  fra.me.REG[3] = ATTR_parser_nodes___AForExpr____n_kwfor(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+    REGB0 = REGB1;
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:3866 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:3867 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 3867);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:3868 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_TKwfor, ID_TKwfor)) /*cast TKwfor*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 3868);
+      }
+      /* ./parser//parser_prod.nit:3869 */
+      ATTR_parser_nodes___AForExpr____n_kwfor(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:3871 */
+      nit_abort("Aborted", NULL, LOCATE_parser_prod, 3871);
+    }
+    /* ./parser//parser_prod.nit:3873 */
+    goto label1;
+  }
+  /* ./parser//parser_prod.nit:3875 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AForExpr____n_id(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_id", LOCATE_parser_prod, 3875);
+  }
+  fra.me.REG[3] = ATTR_parser_nodes___AForExpr____n_id(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+    REGB0 = REGB1;
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:3876 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:3877 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 3877);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:3878 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_TId, ID_TId)) /*cast TId*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 3878);
+      }
+      /* ./parser//parser_prod.nit:3879 */
+      ATTR_parser_nodes___AForExpr____n_id(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:3881 */
+      nit_abort("Aborted", NULL, LOCATE_parser_prod, 3881);
+    }
+    /* ./parser//parser_prod.nit:3883 */
+    goto label1;
+  }
+  /* ./parser//parser_prod.nit:3885 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AForExpr____n_expr(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser_prod, 3885);
+  }
+  fra.me.REG[3] = ATTR_parser_nodes___AForExpr____n_expr(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+    REGB0 = REGB1;
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:3886 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:3887 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 3887);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:3888 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_AExpr, ID_AExpr)) /*cast AExpr*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 3888);
+      }
+      /* ./parser//parser_prod.nit:3889 */
+      ATTR_parser_nodes___AForExpr____n_expr(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:3891 */
+      nit_abort("Aborted", NULL, LOCATE_parser_prod, 3891);
+    }
+    /* ./parser//parser_prod.nit:3893 */
+    goto label1;
+  }
+  /* ./parser//parser_prod.nit:3895 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AForExpr____n_kwdo(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_kwdo", LOCATE_parser_prod, 3895);
+  }
+  fra.me.REG[3] = ATTR_parser_nodes___AForExpr____n_kwdo(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+    REGB0 = REGB1;
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:3896 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:3897 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 3897);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:3898 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_TKwdo, ID_TKwdo)) /*cast TKwdo*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 3898);
+      }
+      /* ./parser//parser_prod.nit:3899 */
+      ATTR_parser_nodes___AForExpr____n_kwdo(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:3901 */
+      nit_abort("Aborted", NULL, LOCATE_parser_prod, 3901);
+    }
+    /* ./parser//parser_prod.nit:3903 */
+    goto label1;
+  }
+  /* ./parser//parser_prod.nit:3905 */
+  fra.me.REG[3] = ATTR_parser_nodes___AForExpr____n_block(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+      REGB0 = REGB1;
+    }
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:3906 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:3907 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 3907);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:3908 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_AExpr, ID_AExpr)) /*cast AExpr*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 3908);
+      }
+      /* ./parser//parser_prod.nit:3909 */
+      ATTR_parser_nodes___AForExpr____n_block(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:3911 */
+      ATTR_parser_nodes___AForExpr____n_block(fra.me.REG[0]) = NIT_NULL;
+    }
+    /* ./parser//parser_prod.nit:3913 */
+    goto label1;
+  }
+  /* ./parser//parser_prod.nit:3915 */
+  fra.me.REG[3] = ATTR_parser_nodes___ALabelable____n_label(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+      REGB0 = REGB1;
+    }
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:3916 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:3917 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 3917);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:3918 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_ALabel, ID_ALabel)) /*cast ALabel*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 3918);
+      }
+      /* ./parser//parser_prod.nit:3919 */
+      ATTR_parser_nodes___ALabelable____n_label(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:3921 */
+      ATTR_parser_nodes___ALabelable____n_label(fra.me.REG[0]) = NIT_NULL;
+    }
+    /* ./parser//parser_prod.nit:3923 */
+    goto label1;
+  }
+  label1: while(0);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser_prod___AForExpr___visit_all(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 3927;
+  fra.me.meth = LOCATE_parser_prod___AForExpr___visit_all;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:3929 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AForExpr____n_kwfor(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_kwfor", LOCATE_parser_prod, 3929);
+  }
+  fra.me.REG[2] = ATTR_parser_nodes___AForExpr____n_kwfor(fra.me.REG[0]);
+  CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser_prod.nit:3930 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AForExpr____n_id(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_id", LOCATE_parser_prod, 3930);
+  }
+  fra.me.REG[2] = ATTR_parser_nodes___AForExpr____n_id(fra.me.REG[0]);
+  CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser_prod.nit:3931 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AForExpr____n_expr(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser_prod, 3931);
+  }
+  fra.me.REG[2] = ATTR_parser_nodes___AForExpr____n_expr(fra.me.REG[0]);
+  CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser_prod.nit:3932 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AForExpr____n_kwdo(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_kwdo", LOCATE_parser_prod, 3932);
+  }
+  fra.me.REG[2] = ATTR_parser_nodes___AForExpr____n_kwdo(fra.me.REG[0]);
+  CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser_prod.nit:3933 */
+  fra.me.REG[2] = ATTR_parser_nodes___AForExpr____n_block(fra.me.REG[0]);
+  REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:3934 */
+    fra.me.REG[2] = ATTR_parser_nodes___AForExpr____n_block(fra.me.REG[0]);
+    REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_AExpr, ID_AExpr)) /*cast AExpr*/;
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      nit_abort("Cast failed", NULL, LOCATE_parser_prod, 3934);
+    }
+    CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  }
+  /* ./parser//parser_prod.nit:3936 */
+  fra.me.REG[2] = ATTR_parser_nodes___ALabelable____n_label(fra.me.REG[0]);
+  REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:3937 */
+    fra.me.REG[0] = ATTR_parser_nodes___ALabelable____n_label(fra.me.REG[0]);
+    REGB0 = TAG_Bool((fra.me.REG[0]!=NIT_NULL) && VAL_ISA(fra.me.REG[0], COLOR_ALabel, ID_ALabel)) /*cast ALabel*/;
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      nit_abort("Cast failed", NULL, LOCATE_parser_prod, 3937);
+    }
+    CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  }
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser_prod___AAssertExpr___empty_init(val_t p0, int* init_table){
+  int itpos127 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_AAssertExpr].i;
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  if (init_table[itpos127]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 3942;
+  fra.me.meth = LOCATE_parser_prod___AAssertExpr___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos127] = 1;
+  return;
+}
+void parser_prod___AAssertExpr___init_aassertexpr(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4, int* init_table){
+  int itpos128 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_AAssertExpr].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  if (init_table[itpos128]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 3944;
+  fra.me.meth = LOCATE_parser_prod___AAssertExpr___init_aassertexpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  fra.me.REG[3] = p3;
+  fra.me.REG[4] = p4;
+  /* ./parser//parser_prod.nit:3951 */
+  CALL_parser_prod___AAssertExpr___empty_init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  /* ./parser//parser_prod.nit:3952 */
+  REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Cast failed", NULL, LOCATE_parser_prod, 3952);
+  }
+  ATTR_parser_nodes___AAssertExpr____n_kwassert(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./parser//parser_prod.nit:3953 */
+  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+    nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 3953);
+  }
+  CALL_parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  /* ./parser//parser_prod.nit:3954 */
+  ATTR_parser_nodes___AAssertExpr____n_id(fra.me.REG[0]) = fra.me.REG[2];
+  /* ./parser//parser_prod.nit:3955 */
+  REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:3956 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+      nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 3956);
+    }
+    CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+  }
+  /* ./parser//parser_prod.nit:3958 */
+  REGB0 = TAG_Bool(fra.me.REG[3]!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Cast failed", NULL, LOCATE_parser_prod, 3958);
+  }
+  ATTR_parser_nodes___AAssertExpr____n_expr(fra.me.REG[0]) = fra.me.REG[3];
+  /* ./parser//parser_prod.nit:3959 */
+  REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+    nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 3959);
+  }
+  CALL_parser_prod___ANode___parent__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[0]);
+  /* ./parser//parser_prod.nit:3960 */
+  ATTR_parser_nodes___AAssertExpr____n_else(fra.me.REG[0]) = fra.me.REG[4];
+  /* ./parser//parser_prod.nit:3961 */
+  REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:3962 */
+    REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+      nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 3962);
+    }
+    CALL_parser_prod___ANode___parent__eq(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[0]);
+  }
+  stack_frame_head = fra.me.prev;
+  init_table[itpos128] = 1;
+  return;
+}
+void parser_prod___AAssertExpr___replace_child(val_t p0, val_t p1, val_t p2){
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 3966;
+  fra.me.meth = LOCATE_parser_prod___AAssertExpr___replace_child;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  /* ./parser//parser_prod.nit:3968 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AAssertExpr____n_kwassert(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_kwassert", LOCATE_parser_prod, 3968);
+  }
+  fra.me.REG[3] = ATTR_parser_nodes___AAssertExpr____n_kwassert(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+    REGB0 = REGB1;
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:3969 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:3970 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 3970);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:3971 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_TKwassert, ID_TKwassert)) /*cast TKwassert*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 3971);
+      }
+      /* ./parser//parser_prod.nit:3972 */
+      ATTR_parser_nodes___AAssertExpr____n_kwassert(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:3974 */
+      nit_abort("Aborted", NULL, LOCATE_parser_prod, 3974);
+    }
+    /* ./parser//parser_prod.nit:3976 */
+    goto label1;
+  }
+  /* ./parser//parser_prod.nit:3978 */
+  fra.me.REG[3] = ATTR_parser_nodes___AAssertExpr____n_id(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+      REGB0 = REGB1;
+    }
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:3979 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:3980 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 3980);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:3981 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_TId, ID_TId)) /*cast TId*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 3981);
+      }
+      /* ./parser//parser_prod.nit:3982 */
+      ATTR_parser_nodes___AAssertExpr____n_id(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:3984 */
+      ATTR_parser_nodes___AAssertExpr____n_id(fra.me.REG[0]) = NIT_NULL;
+    }
+    /* ./parser//parser_prod.nit:3986 */
+    goto label1;
+  }
+  /* ./parser//parser_prod.nit:3988 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AAssertExpr____n_expr(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser_prod, 3988);
+  }
+  fra.me.REG[3] = ATTR_parser_nodes___AAssertExpr____n_expr(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+    REGB0 = REGB1;
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:3989 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:3990 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 3990);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:3991 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_AExpr, ID_AExpr)) /*cast AExpr*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 3991);
+      }
+      /* ./parser//parser_prod.nit:3992 */
+      ATTR_parser_nodes___AAssertExpr____n_expr(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:3994 */
+      nit_abort("Aborted", NULL, LOCATE_parser_prod, 3994);
+    }
+    /* ./parser//parser_prod.nit:3996 */
+    goto label1;
+  }
+  /* ./parser//parser_prod.nit:3998 */
+  fra.me.REG[3] = ATTR_parser_nodes___AAssertExpr____n_else(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+      REGB0 = REGB1;
+    }
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:3999 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:4000 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 4000);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:4001 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_AExpr, ID_AExpr)) /*cast AExpr*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 4001);
+      }
+      /* ./parser//parser_prod.nit:4002 */
+      ATTR_parser_nodes___AAssertExpr____n_else(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:4004 */
+      ATTR_parser_nodes___AAssertExpr____n_else(fra.me.REG[0]) = NIT_NULL;
+    }
+    /* ./parser//parser_prod.nit:4006 */
+    goto label1;
+  }
+  label1: while(0);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser_prod___AAssertExpr___visit_all(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 4010;
+  fra.me.meth = LOCATE_parser_prod___AAssertExpr___visit_all;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:4012 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AAssertExpr____n_kwassert(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_kwassert", LOCATE_parser_prod, 4012);
+  }
+  fra.me.REG[2] = ATTR_parser_nodes___AAssertExpr____n_kwassert(fra.me.REG[0]);
+  CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser_prod.nit:4013 */
+  fra.me.REG[2] = ATTR_parser_nodes___AAssertExpr____n_id(fra.me.REG[0]);
+  REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:4014 */
+    fra.me.REG[2] = ATTR_parser_nodes___AAssertExpr____n_id(fra.me.REG[0]);
+    REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_TId, ID_TId)) /*cast TId*/;
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      nit_abort("Cast failed", NULL, LOCATE_parser_prod, 4014);
+    }
+    CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  }
+  /* ./parser//parser_prod.nit:4016 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AAssertExpr____n_expr(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser_prod, 4016);
+  }
+  fra.me.REG[2] = ATTR_parser_nodes___AAssertExpr____n_expr(fra.me.REG[0]);
+  CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser_prod.nit:4017 */
+  fra.me.REG[2] = ATTR_parser_nodes___AAssertExpr____n_else(fra.me.REG[0]);
+  REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:4018 */
+    fra.me.REG[0] = ATTR_parser_nodes___AAssertExpr____n_else(fra.me.REG[0]);
+    REGB0 = TAG_Bool((fra.me.REG[0]!=NIT_NULL) && VAL_ISA(fra.me.REG[0], COLOR_AExpr, ID_AExpr)) /*cast AExpr*/;
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      nit_abort("Cast failed", NULL, LOCATE_parser_prod, 4018);
+    }
+    CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  }
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser_prod___AOnceExpr___empty_init(val_t p0, int* init_table){
+  int itpos129 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_AOnceExpr].i;
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  if (init_table[itpos129]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 4023;
+  fra.me.meth = LOCATE_parser_prod___AOnceExpr___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos129] = 1;
+  return;
+}
+void parser_prod___AOnceExpr___init_aonceexpr(val_t p0, val_t p1, val_t p2, int* init_table){
+  int itpos130 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_AOnceExpr].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos130]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 4025;
+  fra.me.meth = LOCATE_parser_prod___AOnceExpr___init_aonceexpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  /* ./parser//parser_prod.nit:4030 */
+  CALL_parser_prod___AOnceExpr___empty_init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  /* ./parser//parser_prod.nit:4031 */
+  REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Cast failed", NULL, LOCATE_parser_prod, 4031);
+  }
+  ATTR_parser_nodes___AOnceExpr____n_kwonce(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./parser//parser_prod.nit:4032 */
+  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+    nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 4032);
+  }
+  CALL_parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  /* ./parser//parser_prod.nit:4033 */
+  REGB0 = TAG_Bool(fra.me.REG[2]!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Cast failed", NULL, LOCATE_parser_prod, 4033);
+  }
+  ATTR_parser_nodes___AProxyExpr____n_expr(fra.me.REG[0]) = fra.me.REG[2];
+  /* ./parser//parser_prod.nit:4034 */
+  REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+    nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 4034);
+  }
+  CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  init_table[itpos130] = 1;
+  return;
+}
+void parser_prod___AOnceExpr___replace_child(val_t p0, val_t p1, val_t p2){
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 4037;
+  fra.me.meth = LOCATE_parser_prod___AOnceExpr___replace_child;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  /* ./parser//parser_prod.nit:4039 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AOnceExpr____n_kwonce(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_kwonce", LOCATE_parser_prod, 4039);
+  }
+  fra.me.REG[3] = ATTR_parser_nodes___AOnceExpr____n_kwonce(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+    REGB0 = REGB1;
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:4040 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:4041 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 4041);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:4042 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_TKwonce, ID_TKwonce)) /*cast TKwonce*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 4042);
+      }
+      /* ./parser//parser_prod.nit:4043 */
+      ATTR_parser_nodes___AOnceExpr____n_kwonce(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:4045 */
+      nit_abort("Aborted", NULL, LOCATE_parser_prod, 4045);
+    }
+    /* ./parser//parser_prod.nit:4047 */
+    goto label1;
+  }
+  /* ./parser//parser_prod.nit:4049 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AProxyExpr____n_expr(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser_prod, 4049);
+  }
+  fra.me.REG[3] = ATTR_parser_nodes___AProxyExpr____n_expr(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+    REGB0 = REGB1;
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:4050 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:4051 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 4051);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:4052 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_AExpr, ID_AExpr)) /*cast AExpr*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 4052);
+      }
+      /* ./parser//parser_prod.nit:4053 */
+      ATTR_parser_nodes___AProxyExpr____n_expr(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:4055 */
+      nit_abort("Aborted", NULL, LOCATE_parser_prod, 4055);
+    }
+    /* ./parser//parser_prod.nit:4057 */
+    goto label1;
+  }
+  label1: while(0);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser_prod___AOnceExpr___visit_all(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 4061;
+  fra.me.meth = LOCATE_parser_prod___AOnceExpr___visit_all;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:4063 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AOnceExpr____n_kwonce(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_kwonce", LOCATE_parser_prod, 4063);
+  }
+  fra.me.REG[2] = ATTR_parser_nodes___AOnceExpr____n_kwonce(fra.me.REG[0]);
+  CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser_prod.nit:4064 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AProxyExpr____n_expr(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser_prod, 4064);
+  }
+  fra.me.REG[0] = ATTR_parser_nodes___AProxyExpr____n_expr(fra.me.REG[0]);
+  CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser_prod___ASendExpr___empty_init(val_t p0, int* init_table){
+  int itpos131 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ASendExpr].i;
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  if (init_table[itpos131]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 4068;
+  fra.me.meth = LOCATE_parser_prod___ASendExpr___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos131] = 1;
+  return;
+}
+void parser_prod___ASendExpr___init_asendexpr(val_t p0, val_t p1, int* init_table){
+  int itpos132 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ASendExpr].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos132]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 4070;
+  fra.me.meth = LOCATE_parser_prod___ASendExpr___init_asendexpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:4074 */
+  CALL_parser_prod___ASendExpr___empty_init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  /* ./parser//parser_prod.nit:4075 */
+  REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Cast failed", NULL, LOCATE_parser_prod, 4075);
+  }
+  ATTR_parser_nodes___ASendExpr____n_expr(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./parser//parser_prod.nit:4076 */
+  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+    nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 4076);
+  }
+  CALL_parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  init_table[itpos132] = 1;
+  return;
+}
+void parser_prod___ASendExpr___replace_child(val_t p0, val_t p1, val_t p2){
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 4079;
+  fra.me.meth = LOCATE_parser_prod___ASendExpr___replace_child;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  /* ./parser//parser_prod.nit:4081 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ASendExpr____n_expr(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser_prod, 4081);
+  }
+  fra.me.REG[3] = ATTR_parser_nodes___ASendExpr____n_expr(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+    REGB0 = REGB1;
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:4082 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:4083 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 4083);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:4084 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_AExpr, ID_AExpr)) /*cast AExpr*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 4084);
+      }
+      /* ./parser//parser_prod.nit:4085 */
+      ATTR_parser_nodes___ASendExpr____n_expr(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:4087 */
+      nit_abort("Aborted", NULL, LOCATE_parser_prod, 4087);
+    }
+    /* ./parser//parser_prod.nit:4089 */
+    goto label1;
+  }
+  label1: while(0);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser_prod___ASendExpr___visit_all(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 4093;
+  fra.me.meth = LOCATE_parser_prod___ASendExpr___visit_all;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:4095 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ASendExpr____n_expr(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser_prod, 4095);
+  }
+  fra.me.REG[0] = ATTR_parser_nodes___ASendExpr____n_expr(fra.me.REG[0]);
+  CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser_prod___ABinopExpr___empty_init(val_t p0, int* init_table){
+  int itpos133 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ABinopExpr].i;
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  if (init_table[itpos133]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 4099;
+  fra.me.meth = LOCATE_parser_prod___ABinopExpr___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos133] = 1;
+  return;
+}
+void parser_prod___ABinopExpr___init_abinopexpr(val_t p0, val_t p1, val_t p2, int* init_table){
+  int itpos134 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ABinopExpr].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos134]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 4101;
+  fra.me.meth = LOCATE_parser_prod___ABinopExpr___init_abinopexpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  /* ./parser//parser_prod.nit:4106 */
+  CALL_parser_prod___ABinopExpr___empty_init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  /* ./parser//parser_prod.nit:4107 */
+  REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Cast failed", NULL, LOCATE_parser_prod, 4107);
+  }
+  ATTR_parser_nodes___ASendExpr____n_expr(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./parser//parser_prod.nit:4108 */
+  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+    nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 4108);
+  }
+  CALL_parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  /* ./parser//parser_prod.nit:4109 */
+  REGB0 = TAG_Bool(fra.me.REG[2]!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Cast failed", NULL, LOCATE_parser_prod, 4109);
+  }
+  ATTR_parser_nodes___ABinopExpr____n_expr2(fra.me.REG[0]) = fra.me.REG[2];
+  /* ./parser//parser_prod.nit:4110 */
+  REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+    nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 4110);
+  }
+  CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  init_table[itpos134] = 1;
+  return;
+}
+void parser_prod___ABinopExpr___replace_child(val_t p0, val_t p1, val_t p2){
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 4113;
+  fra.me.meth = LOCATE_parser_prod___ABinopExpr___replace_child;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  /* ./parser//parser_prod.nit:4115 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ASendExpr____n_expr(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser_prod, 4115);
+  }
+  fra.me.REG[3] = ATTR_parser_nodes___ASendExpr____n_expr(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+    REGB0 = REGB1;
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:4116 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:4117 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 4117);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:4118 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_AExpr, ID_AExpr)) /*cast AExpr*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 4118);
+      }
+      /* ./parser//parser_prod.nit:4119 */
+      ATTR_parser_nodes___ASendExpr____n_expr(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:4121 */
+      nit_abort("Aborted", NULL, LOCATE_parser_prod, 4121);
+    }
+    /* ./parser//parser_prod.nit:4123 */
+    goto label1;
+  }
+  /* ./parser//parser_prod.nit:4125 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ABinopExpr____n_expr2(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_expr2", LOCATE_parser_prod, 4125);
+  }
+  fra.me.REG[3] = ATTR_parser_nodes___ABinopExpr____n_expr2(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+    REGB0 = REGB1;
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:4126 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:4127 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 4127);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:4128 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_AExpr, ID_AExpr)) /*cast AExpr*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 4128);
+      }
+      /* ./parser//parser_prod.nit:4129 */
+      ATTR_parser_nodes___ABinopExpr____n_expr2(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:4131 */
+      nit_abort("Aborted", NULL, LOCATE_parser_prod, 4131);
+    }
+    /* ./parser//parser_prod.nit:4133 */
+    goto label1;
+  }
+  label1: while(0);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser_prod___ABinopExpr___visit_all(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 4137;
+  fra.me.meth = LOCATE_parser_prod___ABinopExpr___visit_all;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:4139 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ASendExpr____n_expr(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser_prod, 4139);
+  }
+  fra.me.REG[2] = ATTR_parser_nodes___ASendExpr____n_expr(fra.me.REG[0]);
+  CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser_prod.nit:4140 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ABinopExpr____n_expr2(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_expr2", LOCATE_parser_prod, 4140);
+  }
+  fra.me.REG[0] = ATTR_parser_nodes___ABinopExpr____n_expr2(fra.me.REG[0]);
+  CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser_prod___AOrExpr___empty_init(val_t p0, int* init_table){
+  int itpos135 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_AOrExpr].i;
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  if (init_table[itpos135]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 4144;
+  fra.me.meth = LOCATE_parser_prod___AOrExpr___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos135] = 1;
+  return;
+}
+void parser_prod___AOrExpr___init_aorexpr(val_t p0, val_t p1, val_t p2, int* init_table){
+  int itpos136 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_AOrExpr].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos136]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 4146;
+  fra.me.meth = LOCATE_parser_prod___AOrExpr___init_aorexpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  /* ./parser//parser_prod.nit:4151 */
+  CALL_parser_prod___AOrExpr___empty_init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  /* ./parser//parser_prod.nit:4152 */
+  REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Cast failed", NULL, LOCATE_parser_prod, 4152);
+  }
+  ATTR_parser_nodes___AOrExpr____n_expr(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./parser//parser_prod.nit:4153 */
+  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+    nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 4153);
+  }
+  CALL_parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  /* ./parser//parser_prod.nit:4154 */
+  REGB0 = TAG_Bool(fra.me.REG[2]!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Cast failed", NULL, LOCATE_parser_prod, 4154);
+  }
+  ATTR_parser_nodes___AOrExpr____n_expr2(fra.me.REG[0]) = fra.me.REG[2];
+  /* ./parser//parser_prod.nit:4155 */
+  REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+    nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 4155);
+  }
+  CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  init_table[itpos136] = 1;
+  return;
+}
+void parser_prod___AOrExpr___replace_child(val_t p0, val_t p1, val_t p2){
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 4158;
+  fra.me.meth = LOCATE_parser_prod___AOrExpr___replace_child;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  /* ./parser//parser_prod.nit:4160 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AOrExpr____n_expr(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser_prod, 4160);
+  }
+  fra.me.REG[3] = ATTR_parser_nodes___AOrExpr____n_expr(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+    REGB0 = REGB1;
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:4161 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:4162 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 4162);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:4163 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_AExpr, ID_AExpr)) /*cast AExpr*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 4163);
+      }
+      /* ./parser//parser_prod.nit:4164 */
+      ATTR_parser_nodes___AOrExpr____n_expr(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:4166 */
+      nit_abort("Aborted", NULL, LOCATE_parser_prod, 4166);
+    }
+    /* ./parser//parser_prod.nit:4168 */
+    goto label1;
+  }
+  /* ./parser//parser_prod.nit:4170 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AOrExpr____n_expr2(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_expr2", LOCATE_parser_prod, 4170);
+  }
+  fra.me.REG[3] = ATTR_parser_nodes___AOrExpr____n_expr2(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+    REGB0 = REGB1;
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:4171 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:4172 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 4172);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:4173 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_AExpr, ID_AExpr)) /*cast AExpr*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 4173);
+      }
+      /* ./parser//parser_prod.nit:4174 */
+      ATTR_parser_nodes___AOrExpr____n_expr2(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:4176 */
+      nit_abort("Aborted", NULL, LOCATE_parser_prod, 4176);
+    }
+    /* ./parser//parser_prod.nit:4178 */
+    goto label1;
+  }
+  label1: while(0);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser_prod___AOrExpr___visit_all(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 4182;
+  fra.me.meth = LOCATE_parser_prod___AOrExpr___visit_all;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:4184 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AOrExpr____n_expr(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser_prod, 4184);
+  }
+  fra.me.REG[2] = ATTR_parser_nodes___AOrExpr____n_expr(fra.me.REG[0]);
+  CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser_prod.nit:4185 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AOrExpr____n_expr2(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_expr2", LOCATE_parser_prod, 4185);
+  }
+  fra.me.REG[0] = ATTR_parser_nodes___AOrExpr____n_expr2(fra.me.REG[0]);
+  CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser_prod___AAndExpr___empty_init(val_t p0, int* init_table){
+  int itpos137 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_AAndExpr].i;
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  if (init_table[itpos137]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 4189;
+  fra.me.meth = LOCATE_parser_prod___AAndExpr___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos137] = 1;
+  return;
+}
+void parser_prod___AAndExpr___init_aandexpr(val_t p0, val_t p1, val_t p2, int* init_table){
+  int itpos138 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_AAndExpr].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos138]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 4191;
+  fra.me.meth = LOCATE_parser_prod___AAndExpr___init_aandexpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  /* ./parser//parser_prod.nit:4196 */
+  CALL_parser_prod___AAndExpr___empty_init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  /* ./parser//parser_prod.nit:4197 */
+  REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Cast failed", NULL, LOCATE_parser_prod, 4197);
+  }
+  ATTR_parser_nodes___AAndExpr____n_expr(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./parser//parser_prod.nit:4198 */
+  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+    nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 4198);
+  }
+  CALL_parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  /* ./parser//parser_prod.nit:4199 */
+  REGB0 = TAG_Bool(fra.me.REG[2]!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Cast failed", NULL, LOCATE_parser_prod, 4199);
+  }
+  ATTR_parser_nodes___AAndExpr____n_expr2(fra.me.REG[0]) = fra.me.REG[2];
+  /* ./parser//parser_prod.nit:4200 */
+  REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+    nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 4200);
+  }
+  CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  init_table[itpos138] = 1;
+  return;
+}
+void parser_prod___AAndExpr___replace_child(val_t p0, val_t p1, val_t p2){
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 4203;
+  fra.me.meth = LOCATE_parser_prod___AAndExpr___replace_child;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  /* ./parser//parser_prod.nit:4205 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AAndExpr____n_expr(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser_prod, 4205);
+  }
+  fra.me.REG[3] = ATTR_parser_nodes___AAndExpr____n_expr(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+    REGB0 = REGB1;
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:4206 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:4207 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 4207);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:4208 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_AExpr, ID_AExpr)) /*cast AExpr*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 4208);
+      }
+      /* ./parser//parser_prod.nit:4209 */
+      ATTR_parser_nodes___AAndExpr____n_expr(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:4211 */
+      nit_abort("Aborted", NULL, LOCATE_parser_prod, 4211);
+    }
+    /* ./parser//parser_prod.nit:4213 */
+    goto label1;
+  }
+  /* ./parser//parser_prod.nit:4215 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AAndExpr____n_expr2(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_expr2", LOCATE_parser_prod, 4215);
+  }
+  fra.me.REG[3] = ATTR_parser_nodes___AAndExpr____n_expr2(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+    REGB0 = REGB1;
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:4216 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:4217 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 4217);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:4218 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_AExpr, ID_AExpr)) /*cast AExpr*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 4218);
+      }
+      /* ./parser//parser_prod.nit:4219 */
+      ATTR_parser_nodes___AAndExpr____n_expr2(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:4221 */
+      nit_abort("Aborted", NULL, LOCATE_parser_prod, 4221);
+    }
+    /* ./parser//parser_prod.nit:4223 */
+    goto label1;
+  }
+  label1: while(0);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser_prod___AAndExpr___visit_all(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 4227;
+  fra.me.meth = LOCATE_parser_prod___AAndExpr___visit_all;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:4229 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AAndExpr____n_expr(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser_prod, 4229);
+  }
+  fra.me.REG[2] = ATTR_parser_nodes___AAndExpr____n_expr(fra.me.REG[0]);
+  CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser_prod.nit:4230 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AAndExpr____n_expr2(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_expr2", LOCATE_parser_prod, 4230);
+  }
+  fra.me.REG[0] = ATTR_parser_nodes___AAndExpr____n_expr2(fra.me.REG[0]);
+  CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser_prod___AOrElseExpr___empty_init(val_t p0, int* init_table){
+  int itpos139 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_AOrElseExpr].i;
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  if (init_table[itpos139]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 4234;
+  fra.me.meth = LOCATE_parser_prod___AOrElseExpr___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos139] = 1;
+  return;
+}
+void parser_prod___AOrElseExpr___init_aorelseexpr(val_t p0, val_t p1, val_t p2, int* init_table){
+  int itpos140 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_AOrElseExpr].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos140]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 4236;
+  fra.me.meth = LOCATE_parser_prod___AOrElseExpr___init_aorelseexpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  /* ./parser//parser_prod.nit:4241 */
+  CALL_parser_prod___AOrElseExpr___empty_init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  /* ./parser//parser_prod.nit:4242 */
+  REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Cast failed", NULL, LOCATE_parser_prod, 4242);
+  }
+  ATTR_parser_nodes___AOrElseExpr____n_expr(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./parser//parser_prod.nit:4243 */
+  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+    nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 4243);
+  }
+  CALL_parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  /* ./parser//parser_prod.nit:4244 */
+  REGB0 = TAG_Bool(fra.me.REG[2]!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Cast failed", NULL, LOCATE_parser_prod, 4244);
+  }
+  ATTR_parser_nodes___AOrElseExpr____n_expr2(fra.me.REG[0]) = fra.me.REG[2];
+  /* ./parser//parser_prod.nit:4245 */
+  REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+    nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 4245);
+  }
+  CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  init_table[itpos140] = 1;
+  return;
+}
+void parser_prod___AOrElseExpr___replace_child(val_t p0, val_t p1, val_t p2){
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 4248;
+  fra.me.meth = LOCATE_parser_prod___AOrElseExpr___replace_child;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  /* ./parser//parser_prod.nit:4250 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AOrElseExpr____n_expr(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser_prod, 4250);
+  }
+  fra.me.REG[3] = ATTR_parser_nodes___AOrElseExpr____n_expr(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+    REGB0 = REGB1;
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:4251 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:4252 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 4252);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:4253 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_AExpr, ID_AExpr)) /*cast AExpr*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 4253);
+      }
+      /* ./parser//parser_prod.nit:4254 */
+      ATTR_parser_nodes___AOrElseExpr____n_expr(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:4256 */
+      nit_abort("Aborted", NULL, LOCATE_parser_prod, 4256);
+    }
+    /* ./parser//parser_prod.nit:4258 */
+    goto label1;
+  }
+  /* ./parser//parser_prod.nit:4260 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AOrElseExpr____n_expr2(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_expr2", LOCATE_parser_prod, 4260);
+  }
+  fra.me.REG[3] = ATTR_parser_nodes___AOrElseExpr____n_expr2(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+    REGB0 = REGB1;
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:4261 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:4262 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 4262);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:4263 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_AExpr, ID_AExpr)) /*cast AExpr*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 4263);
+      }
+      /* ./parser//parser_prod.nit:4264 */
+      ATTR_parser_nodes___AOrElseExpr____n_expr2(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:4266 */
+      nit_abort("Aborted", NULL, LOCATE_parser_prod, 4266);
+    }
+    /* ./parser//parser_prod.nit:4268 */
+    goto label1;
+  }
+  label1: while(0);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser_prod___AOrElseExpr___visit_all(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 4272;
+  fra.me.meth = LOCATE_parser_prod___AOrElseExpr___visit_all;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:4274 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AOrElseExpr____n_expr(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser_prod, 4274);
+  }
+  fra.me.REG[2] = ATTR_parser_nodes___AOrElseExpr____n_expr(fra.me.REG[0]);
+  CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser_prod.nit:4275 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AOrElseExpr____n_expr2(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_expr2", LOCATE_parser_prod, 4275);
+  }
+  fra.me.REG[0] = ATTR_parser_nodes___AOrElseExpr____n_expr2(fra.me.REG[0]);
+  CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser_prod___ANotExpr___empty_init(val_t p0, int* init_table){
+  int itpos141 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ANotExpr].i;
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  if (init_table[itpos141]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 4279;
+  fra.me.meth = LOCATE_parser_prod___ANotExpr___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos141] = 1;
+  return;
+}
+void parser_prod___ANotExpr___init_anotexpr(val_t p0, val_t p1, val_t p2, int* init_table){
+  int itpos142 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ANotExpr].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos142]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 4281;
+  fra.me.meth = LOCATE_parser_prod___ANotExpr___init_anotexpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  /* ./parser//parser_prod.nit:4286 */
+  CALL_parser_prod___ANotExpr___empty_init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  /* ./parser//parser_prod.nit:4287 */
+  REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Cast failed", NULL, LOCATE_parser_prod, 4287);
+  }
+  ATTR_parser_nodes___ANotExpr____n_kwnot(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./parser//parser_prod.nit:4288 */
+  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+    nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 4288);
+  }
+  CALL_parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  /* ./parser//parser_prod.nit:4289 */
+  REGB0 = TAG_Bool(fra.me.REG[2]!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Cast failed", NULL, LOCATE_parser_prod, 4289);
+  }
+  ATTR_parser_nodes___ANotExpr____n_expr(fra.me.REG[0]) = fra.me.REG[2];
+  /* ./parser//parser_prod.nit:4290 */
+  REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+    nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 4290);
+  }
+  CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  init_table[itpos142] = 1;
+  return;
+}
+void parser_prod___ANotExpr___replace_child(val_t p0, val_t p1, val_t p2){
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 4293;
+  fra.me.meth = LOCATE_parser_prod___ANotExpr___replace_child;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  /* ./parser//parser_prod.nit:4295 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ANotExpr____n_kwnot(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_kwnot", LOCATE_parser_prod, 4295);
+  }
+  fra.me.REG[3] = ATTR_parser_nodes___ANotExpr____n_kwnot(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+    REGB0 = REGB1;
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:4296 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:4297 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 4297);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:4298 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_TKwnot, ID_TKwnot)) /*cast TKwnot*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 4298);
+      }
+      /* ./parser//parser_prod.nit:4299 */
+      ATTR_parser_nodes___ANotExpr____n_kwnot(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:4301 */
+      nit_abort("Aborted", NULL, LOCATE_parser_prod, 4301);
+    }
+    /* ./parser//parser_prod.nit:4303 */
+    goto label1;
+  }
+  /* ./parser//parser_prod.nit:4305 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ANotExpr____n_expr(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser_prod, 4305);
+  }
+  fra.me.REG[3] = ATTR_parser_nodes___ANotExpr____n_expr(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+    REGB0 = REGB1;
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:4306 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:4307 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 4307);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:4308 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_AExpr, ID_AExpr)) /*cast AExpr*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 4308);
+      }
+      /* ./parser//parser_prod.nit:4309 */
+      ATTR_parser_nodes___ANotExpr____n_expr(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:4311 */
+      nit_abort("Aborted", NULL, LOCATE_parser_prod, 4311);
+    }
+    /* ./parser//parser_prod.nit:4313 */
+    goto label1;
+  }
+  label1: while(0);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser_prod___ANotExpr___visit_all(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 4317;
+  fra.me.meth = LOCATE_parser_prod___ANotExpr___visit_all;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:4319 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ANotExpr____n_kwnot(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_kwnot", LOCATE_parser_prod, 4319);
+  }
+  fra.me.REG[2] = ATTR_parser_nodes___ANotExpr____n_kwnot(fra.me.REG[0]);
+  CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser_prod.nit:4320 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ANotExpr____n_expr(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser_prod, 4320);
+  }
+  fra.me.REG[0] = ATTR_parser_nodes___ANotExpr____n_expr(fra.me.REG[0]);
+  CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser_prod___AEqExpr___empty_init(val_t p0, int* init_table){
+  int itpos143 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_AEqExpr].i;
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  if (init_table[itpos143]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 4324;
+  fra.me.meth = LOCATE_parser_prod___AEqExpr___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos143] = 1;
+  return;
+}
+void parser_prod___AEqExpr___init_aeqexpr(val_t p0, val_t p1, val_t p2, int* init_table){
+  int itpos144 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_AEqExpr].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos144]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 4326;
+  fra.me.meth = LOCATE_parser_prod___AEqExpr___init_aeqexpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  /* ./parser//parser_prod.nit:4331 */
+  CALL_parser_prod___AEqExpr___empty_init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  /* ./parser//parser_prod.nit:4332 */
+  REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Cast failed", NULL, LOCATE_parser_prod, 4332);
+  }
+  ATTR_parser_nodes___ASendExpr____n_expr(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./parser//parser_prod.nit:4333 */
+  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+    nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 4333);
+  }
+  CALL_parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  /* ./parser//parser_prod.nit:4334 */
+  REGB0 = TAG_Bool(fra.me.REG[2]!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Cast failed", NULL, LOCATE_parser_prod, 4334);
+  }
+  ATTR_parser_nodes___ABinopExpr____n_expr2(fra.me.REG[0]) = fra.me.REG[2];
+  /* ./parser//parser_prod.nit:4335 */
+  REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+    nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 4335);
+  }
+  CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  init_table[itpos144] = 1;
+  return;
+}
+void parser_prod___AEqExpr___replace_child(val_t p0, val_t p1, val_t p2){
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 4338;
+  fra.me.meth = LOCATE_parser_prod___AEqExpr___replace_child;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  /* ./parser//parser_prod.nit:4340 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ASendExpr____n_expr(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser_prod, 4340);
+  }
+  fra.me.REG[3] = ATTR_parser_nodes___ASendExpr____n_expr(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+    REGB0 = REGB1;
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:4341 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:4342 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 4342);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:4343 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_AExpr, ID_AExpr)) /*cast AExpr*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 4343);
+      }
+      /* ./parser//parser_prod.nit:4344 */
+      ATTR_parser_nodes___ASendExpr____n_expr(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:4346 */
+      nit_abort("Aborted", NULL, LOCATE_parser_prod, 4346);
+    }
+    /* ./parser//parser_prod.nit:4348 */
+    goto label1;
+  }
+  /* ./parser//parser_prod.nit:4350 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ABinopExpr____n_expr2(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_expr2", LOCATE_parser_prod, 4350);
+  }
+  fra.me.REG[3] = ATTR_parser_nodes___ABinopExpr____n_expr2(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+    REGB0 = REGB1;
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:4351 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:4352 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 4352);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:4353 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_AExpr, ID_AExpr)) /*cast AExpr*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 4353);
+      }
+      /* ./parser//parser_prod.nit:4354 */
+      ATTR_parser_nodes___ABinopExpr____n_expr2(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:4356 */
+      nit_abort("Aborted", NULL, LOCATE_parser_prod, 4356);
+    }
+    /* ./parser//parser_prod.nit:4358 */
+    goto label1;
+  }
+  label1: while(0);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser_prod___AEqExpr___visit_all(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 4362;
+  fra.me.meth = LOCATE_parser_prod___AEqExpr___visit_all;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:4364 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ASendExpr____n_expr(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser_prod, 4364);
+  }
+  fra.me.REG[2] = ATTR_parser_nodes___ASendExpr____n_expr(fra.me.REG[0]);
+  CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser_prod.nit:4365 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ABinopExpr____n_expr2(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_expr2", LOCATE_parser_prod, 4365);
+  }
+  fra.me.REG[0] = ATTR_parser_nodes___ABinopExpr____n_expr2(fra.me.REG[0]);
+  CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser_prod___AEeExpr___empty_init(val_t p0, int* init_table){
+  int itpos145 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_AEeExpr].i;
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  if (init_table[itpos145]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 4369;
+  fra.me.meth = LOCATE_parser_prod___AEeExpr___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos145] = 1;
+  return;
+}
+void parser_prod___AEeExpr___init_aeeexpr(val_t p0, val_t p1, val_t p2, int* init_table){
+  int itpos146 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_AEeExpr].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos146]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 4371;
+  fra.me.meth = LOCATE_parser_prod___AEeExpr___init_aeeexpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  /* ./parser//parser_prod.nit:4376 */
+  CALL_parser_prod___AEeExpr___empty_init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  /* ./parser//parser_prod.nit:4377 */
+  REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Cast failed", NULL, LOCATE_parser_prod, 4377);
+  }
+  ATTR_parser_nodes___AEeExpr____n_expr(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./parser//parser_prod.nit:4378 */
+  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+    nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 4378);
+  }
+  CALL_parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  /* ./parser//parser_prod.nit:4379 */
+  REGB0 = TAG_Bool(fra.me.REG[2]!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Cast failed", NULL, LOCATE_parser_prod, 4379);
+  }
+  ATTR_parser_nodes___AEeExpr____n_expr2(fra.me.REG[0]) = fra.me.REG[2];
+  /* ./parser//parser_prod.nit:4380 */
+  REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+    nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 4380);
+  }
+  CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  init_table[itpos146] = 1;
+  return;
+}
+void parser_prod___AEeExpr___replace_child(val_t p0, val_t p1, val_t p2){
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 4383;
+  fra.me.meth = LOCATE_parser_prod___AEeExpr___replace_child;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  /* ./parser//parser_prod.nit:4385 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AEeExpr____n_expr(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser_prod, 4385);
+  }
+  fra.me.REG[3] = ATTR_parser_nodes___AEeExpr____n_expr(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+    REGB0 = REGB1;
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:4386 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:4387 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 4387);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:4388 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_AExpr, ID_AExpr)) /*cast AExpr*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 4388);
+      }
+      /* ./parser//parser_prod.nit:4389 */
+      ATTR_parser_nodes___AEeExpr____n_expr(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:4391 */
+      nit_abort("Aborted", NULL, LOCATE_parser_prod, 4391);
+    }
+    /* ./parser//parser_prod.nit:4393 */
+    goto label1;
+  }
+  /* ./parser//parser_prod.nit:4395 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AEeExpr____n_expr2(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_expr2", LOCATE_parser_prod, 4395);
+  }
+  fra.me.REG[3] = ATTR_parser_nodes___AEeExpr____n_expr2(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+    REGB0 = REGB1;
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:4396 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:4397 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 4397);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:4398 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_AExpr, ID_AExpr)) /*cast AExpr*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 4398);
+      }
+      /* ./parser//parser_prod.nit:4399 */
+      ATTR_parser_nodes___AEeExpr____n_expr2(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:4401 */
+      nit_abort("Aborted", NULL, LOCATE_parser_prod, 4401);
+    }
+    /* ./parser//parser_prod.nit:4403 */
+    goto label1;
+  }
+  label1: while(0);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser_prod___AEeExpr___visit_all(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 4407;
+  fra.me.meth = LOCATE_parser_prod___AEeExpr___visit_all;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:4409 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AEeExpr____n_expr(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser_prod, 4409);
+  }
+  fra.me.REG[2] = ATTR_parser_nodes___AEeExpr____n_expr(fra.me.REG[0]);
+  CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser_prod.nit:4410 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AEeExpr____n_expr2(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_expr2", LOCATE_parser_prod, 4410);
+  }
+  fra.me.REG[0] = ATTR_parser_nodes___AEeExpr____n_expr2(fra.me.REG[0]);
+  CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser_prod___ANeExpr___empty_init(val_t p0, int* init_table){
+  int itpos147 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ANeExpr].i;
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  if (init_table[itpos147]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 4414;
+  fra.me.meth = LOCATE_parser_prod___ANeExpr___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos147] = 1;
+  return;
+}
+void parser_prod___ANeExpr___init_aneexpr(val_t p0, val_t p1, val_t p2, int* init_table){
+  int itpos148 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ANeExpr].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos148]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 4416;
+  fra.me.meth = LOCATE_parser_prod___ANeExpr___init_aneexpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  /* ./parser//parser_prod.nit:4421 */
+  CALL_parser_prod___ANeExpr___empty_init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  /* ./parser//parser_prod.nit:4422 */
+  REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Cast failed", NULL, LOCATE_parser_prod, 4422);
+  }
+  ATTR_parser_nodes___ASendExpr____n_expr(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./parser//parser_prod.nit:4423 */
+  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+    nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 4423);
+  }
+  CALL_parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  /* ./parser//parser_prod.nit:4424 */
+  REGB0 = TAG_Bool(fra.me.REG[2]!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Cast failed", NULL, LOCATE_parser_prod, 4424);
+  }
+  ATTR_parser_nodes___ABinopExpr____n_expr2(fra.me.REG[0]) = fra.me.REG[2];
+  /* ./parser//parser_prod.nit:4425 */
+  REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+    nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 4425);
+  }
+  CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  init_table[itpos148] = 1;
+  return;
+}
+void parser_prod___ANeExpr___replace_child(val_t p0, val_t p1, val_t p2){
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 4428;
+  fra.me.meth = LOCATE_parser_prod___ANeExpr___replace_child;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  /* ./parser//parser_prod.nit:4430 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ASendExpr____n_expr(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser_prod, 4430);
+  }
+  fra.me.REG[3] = ATTR_parser_nodes___ASendExpr____n_expr(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+    REGB0 = REGB1;
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:4431 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:4432 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 4432);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:4433 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_AExpr, ID_AExpr)) /*cast AExpr*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 4433);
+      }
+      /* ./parser//parser_prod.nit:4434 */
+      ATTR_parser_nodes___ASendExpr____n_expr(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:4436 */
+      nit_abort("Aborted", NULL, LOCATE_parser_prod, 4436);
+    }
+    /* ./parser//parser_prod.nit:4438 */
+    goto label1;
+  }
+  /* ./parser//parser_prod.nit:4440 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ABinopExpr____n_expr2(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_expr2", LOCATE_parser_prod, 4440);
+  }
+  fra.me.REG[3] = ATTR_parser_nodes___ABinopExpr____n_expr2(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+    REGB0 = REGB1;
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:4441 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:4442 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 4442);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:4443 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_AExpr, ID_AExpr)) /*cast AExpr*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 4443);
+      }
+      /* ./parser//parser_prod.nit:4444 */
+      ATTR_parser_nodes___ABinopExpr____n_expr2(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:4446 */
+      nit_abort("Aborted", NULL, LOCATE_parser_prod, 4446);
+    }
+    /* ./parser//parser_prod.nit:4448 */
+    goto label1;
+  }
+  label1: while(0);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser_prod___ANeExpr___visit_all(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 4452;
+  fra.me.meth = LOCATE_parser_prod___ANeExpr___visit_all;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:4454 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ASendExpr____n_expr(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser_prod, 4454);
+  }
+  fra.me.REG[2] = ATTR_parser_nodes___ASendExpr____n_expr(fra.me.REG[0]);
+  CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser_prod.nit:4455 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ABinopExpr____n_expr2(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_expr2", LOCATE_parser_prod, 4455);
+  }
+  fra.me.REG[0] = ATTR_parser_nodes___ABinopExpr____n_expr2(fra.me.REG[0]);
+  CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser_prod___ALtExpr___empty_init(val_t p0, int* init_table){
+  int itpos149 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ALtExpr].i;
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  if (init_table[itpos149]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 4459;
+  fra.me.meth = LOCATE_parser_prod___ALtExpr___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos149] = 1;
+  return;
+}
+void parser_prod___ALtExpr___init_altexpr(val_t p0, val_t p1, val_t p2, int* init_table){
+  int itpos150 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ALtExpr].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos150]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 4461;
+  fra.me.meth = LOCATE_parser_prod___ALtExpr___init_altexpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  /* ./parser//parser_prod.nit:4466 */
+  CALL_parser_prod___ALtExpr___empty_init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  /* ./parser//parser_prod.nit:4467 */
+  REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Cast failed", NULL, LOCATE_parser_prod, 4467);
+  }
+  ATTR_parser_nodes___ASendExpr____n_expr(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./parser//parser_prod.nit:4468 */
+  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+    nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 4468);
+  }
+  CALL_parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  /* ./parser//parser_prod.nit:4469 */
+  REGB0 = TAG_Bool(fra.me.REG[2]!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Cast failed", NULL, LOCATE_parser_prod, 4469);
+  }
+  ATTR_parser_nodes___ABinopExpr____n_expr2(fra.me.REG[0]) = fra.me.REG[2];
+  /* ./parser//parser_prod.nit:4470 */
+  REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+    nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 4470);
+  }
+  CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  init_table[itpos150] = 1;
+  return;
+}
+void parser_prod___ALtExpr___replace_child(val_t p0, val_t p1, val_t p2){
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 4473;
+  fra.me.meth = LOCATE_parser_prod___ALtExpr___replace_child;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  /* ./parser//parser_prod.nit:4475 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ASendExpr____n_expr(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser_prod, 4475);
+  }
+  fra.me.REG[3] = ATTR_parser_nodes___ASendExpr____n_expr(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+    REGB0 = REGB1;
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:4476 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:4477 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 4477);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:4478 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_AExpr, ID_AExpr)) /*cast AExpr*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 4478);
+      }
+      /* ./parser//parser_prod.nit:4479 */
+      ATTR_parser_nodes___ASendExpr____n_expr(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:4481 */
+      nit_abort("Aborted", NULL, LOCATE_parser_prod, 4481);
+    }
+    /* ./parser//parser_prod.nit:4483 */
+    goto label1;
+  }
+  /* ./parser//parser_prod.nit:4485 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ABinopExpr____n_expr2(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_expr2", LOCATE_parser_prod, 4485);
+  }
+  fra.me.REG[3] = ATTR_parser_nodes___ABinopExpr____n_expr2(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+    REGB0 = REGB1;
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:4486 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:4487 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 4487);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:4488 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_AExpr, ID_AExpr)) /*cast AExpr*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 4488);
+      }
+      /* ./parser//parser_prod.nit:4489 */
+      ATTR_parser_nodes___ABinopExpr____n_expr2(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:4491 */
+      nit_abort("Aborted", NULL, LOCATE_parser_prod, 4491);
+    }
+    /* ./parser//parser_prod.nit:4493 */
+    goto label1;
+  }
+  label1: while(0);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser_prod___ALtExpr___visit_all(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 4497;
+  fra.me.meth = LOCATE_parser_prod___ALtExpr___visit_all;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:4499 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ASendExpr____n_expr(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser_prod, 4499);
+  }
+  fra.me.REG[2] = ATTR_parser_nodes___ASendExpr____n_expr(fra.me.REG[0]);
+  CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser_prod.nit:4500 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ABinopExpr____n_expr2(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_expr2", LOCATE_parser_prod, 4500);
+  }
+  fra.me.REG[0] = ATTR_parser_nodes___ABinopExpr____n_expr2(fra.me.REG[0]);
+  CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser_prod___ALeExpr___empty_init(val_t p0, int* init_table){
+  int itpos151 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ALeExpr].i;
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  if (init_table[itpos151]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 4504;
+  fra.me.meth = LOCATE_parser_prod___ALeExpr___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos151] = 1;
+  return;
+}
+void parser_prod___ALeExpr___init_aleexpr(val_t p0, val_t p1, val_t p2, int* init_table){
+  int itpos152 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ALeExpr].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos152]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 4506;
+  fra.me.meth = LOCATE_parser_prod___ALeExpr___init_aleexpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  /* ./parser//parser_prod.nit:4511 */
+  CALL_parser_prod___ALeExpr___empty_init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  /* ./parser//parser_prod.nit:4512 */
+  REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Cast failed", NULL, LOCATE_parser_prod, 4512);
+  }
+  ATTR_parser_nodes___ASendExpr____n_expr(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./parser//parser_prod.nit:4513 */
+  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+    nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 4513);
+  }
+  CALL_parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  /* ./parser//parser_prod.nit:4514 */
+  REGB0 = TAG_Bool(fra.me.REG[2]!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Cast failed", NULL, LOCATE_parser_prod, 4514);
+  }
+  ATTR_parser_nodes___ABinopExpr____n_expr2(fra.me.REG[0]) = fra.me.REG[2];
+  /* ./parser//parser_prod.nit:4515 */
+  REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+    nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 4515);
+  }
+  CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  init_table[itpos152] = 1;
+  return;
+}
+void parser_prod___ALeExpr___replace_child(val_t p0, val_t p1, val_t p2){
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 4518;
+  fra.me.meth = LOCATE_parser_prod___ALeExpr___replace_child;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  /* ./parser//parser_prod.nit:4520 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ASendExpr____n_expr(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser_prod, 4520);
+  }
+  fra.me.REG[3] = ATTR_parser_nodes___ASendExpr____n_expr(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+    REGB0 = REGB1;
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:4521 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:4522 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 4522);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:4523 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_AExpr, ID_AExpr)) /*cast AExpr*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 4523);
+      }
+      /* ./parser//parser_prod.nit:4524 */
+      ATTR_parser_nodes___ASendExpr____n_expr(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:4526 */
+      nit_abort("Aborted", NULL, LOCATE_parser_prod, 4526);
+    }
+    /* ./parser//parser_prod.nit:4528 */
+    goto label1;
+  }
+  /* ./parser//parser_prod.nit:4530 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ABinopExpr____n_expr2(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_expr2", LOCATE_parser_prod, 4530);
+  }
+  fra.me.REG[3] = ATTR_parser_nodes___ABinopExpr____n_expr2(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+    REGB0 = REGB1;
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:4531 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:4532 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 4532);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:4533 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_AExpr, ID_AExpr)) /*cast AExpr*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 4533);
+      }
+      /* ./parser//parser_prod.nit:4534 */
+      ATTR_parser_nodes___ABinopExpr____n_expr2(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:4536 */
+      nit_abort("Aborted", NULL, LOCATE_parser_prod, 4536);
+    }
+    /* ./parser//parser_prod.nit:4538 */
+    goto label1;
+  }
+  label1: while(0);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser_prod___ALeExpr___visit_all(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 4542;
+  fra.me.meth = LOCATE_parser_prod___ALeExpr___visit_all;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:4544 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ASendExpr____n_expr(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser_prod, 4544);
+  }
+  fra.me.REG[2] = ATTR_parser_nodes___ASendExpr____n_expr(fra.me.REG[0]);
+  CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser_prod.nit:4545 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ABinopExpr____n_expr2(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_expr2", LOCATE_parser_prod, 4545);
+  }
+  fra.me.REG[0] = ATTR_parser_nodes___ABinopExpr____n_expr2(fra.me.REG[0]);
+  CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser_prod___ALlExpr___empty_init(val_t p0, int* init_table){
+  int itpos153 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ALlExpr].i;
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  if (init_table[itpos153]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 4549;
+  fra.me.meth = LOCATE_parser_prod___ALlExpr___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos153] = 1;
+  return;
+}
+void parser_prod___ALlExpr___init_allexpr(val_t p0, val_t p1, val_t p2, int* init_table){
+  int itpos154 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ALlExpr].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos154]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 4551;
+  fra.me.meth = LOCATE_parser_prod___ALlExpr___init_allexpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  /* ./parser//parser_prod.nit:4556 */
+  CALL_parser_prod___ALlExpr___empty_init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  /* ./parser//parser_prod.nit:4557 */
+  REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Cast failed", NULL, LOCATE_parser_prod, 4557);
+  }
+  ATTR_parser_nodes___ASendExpr____n_expr(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./parser//parser_prod.nit:4558 */
+  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+    nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 4558);
+  }
+  CALL_parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  /* ./parser//parser_prod.nit:4559 */
+  REGB0 = TAG_Bool(fra.me.REG[2]!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Cast failed", NULL, LOCATE_parser_prod, 4559);
+  }
+  ATTR_parser_nodes___ABinopExpr____n_expr2(fra.me.REG[0]) = fra.me.REG[2];
+  /* ./parser//parser_prod.nit:4560 */
+  REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+    nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 4560);
+  }
+  CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  init_table[itpos154] = 1;
+  return;
+}
+void parser_prod___ALlExpr___replace_child(val_t p0, val_t p1, val_t p2){
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 4563;
+  fra.me.meth = LOCATE_parser_prod___ALlExpr___replace_child;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  /* ./parser//parser_prod.nit:4565 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ASendExpr____n_expr(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser_prod, 4565);
+  }
+  fra.me.REG[3] = ATTR_parser_nodes___ASendExpr____n_expr(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+    REGB0 = REGB1;
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:4566 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:4567 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 4567);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:4568 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_AExpr, ID_AExpr)) /*cast AExpr*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 4568);
+      }
+      /* ./parser//parser_prod.nit:4569 */
+      ATTR_parser_nodes___ASendExpr____n_expr(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:4571 */
+      nit_abort("Aborted", NULL, LOCATE_parser_prod, 4571);
+    }
+    /* ./parser//parser_prod.nit:4573 */
+    goto label1;
+  }
+  /* ./parser//parser_prod.nit:4575 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ABinopExpr____n_expr2(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_expr2", LOCATE_parser_prod, 4575);
+  }
+  fra.me.REG[3] = ATTR_parser_nodes___ABinopExpr____n_expr2(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+    REGB0 = REGB1;
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:4576 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:4577 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 4577);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:4578 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_AExpr, ID_AExpr)) /*cast AExpr*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 4578);
+      }
+      /* ./parser//parser_prod.nit:4579 */
+      ATTR_parser_nodes___ABinopExpr____n_expr2(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:4581 */
+      nit_abort("Aborted", NULL, LOCATE_parser_prod, 4581);
+    }
+    /* ./parser//parser_prod.nit:4583 */
+    goto label1;
+  }
+  label1: while(0);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser_prod___ALlExpr___visit_all(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 4587;
+  fra.me.meth = LOCATE_parser_prod___ALlExpr___visit_all;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:4589 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ASendExpr____n_expr(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser_prod, 4589);
+  }
+  fra.me.REG[2] = ATTR_parser_nodes___ASendExpr____n_expr(fra.me.REG[0]);
+  CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser_prod.nit:4590 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ABinopExpr____n_expr2(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_expr2", LOCATE_parser_prod, 4590);
+  }
+  fra.me.REG[0] = ATTR_parser_nodes___ABinopExpr____n_expr2(fra.me.REG[0]);
+  CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser_prod___AGtExpr___empty_init(val_t p0, int* init_table){
+  int itpos155 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_AGtExpr].i;
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  if (init_table[itpos155]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 4594;
+  fra.me.meth = LOCATE_parser_prod___AGtExpr___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos155] = 1;
+  return;
+}
+void parser_prod___AGtExpr___init_agtexpr(val_t p0, val_t p1, val_t p2, int* init_table){
+  int itpos156 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_AGtExpr].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos156]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 4596;
+  fra.me.meth = LOCATE_parser_prod___AGtExpr___init_agtexpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  /* ./parser//parser_prod.nit:4601 */
+  CALL_parser_prod___AGtExpr___empty_init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  /* ./parser//parser_prod.nit:4602 */
+  REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Cast failed", NULL, LOCATE_parser_prod, 4602);
+  }
+  ATTR_parser_nodes___ASendExpr____n_expr(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./parser//parser_prod.nit:4603 */
+  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+    nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 4603);
+  }
+  CALL_parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  /* ./parser//parser_prod.nit:4604 */
+  REGB0 = TAG_Bool(fra.me.REG[2]!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Cast failed", NULL, LOCATE_parser_prod, 4604);
+  }
+  ATTR_parser_nodes___ABinopExpr____n_expr2(fra.me.REG[0]) = fra.me.REG[2];
+  /* ./parser//parser_prod.nit:4605 */
+  REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+    nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 4605);
+  }
+  CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  init_table[itpos156] = 1;
+  return;
+}
+void parser_prod___AGtExpr___replace_child(val_t p0, val_t p1, val_t p2){
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 4608;
+  fra.me.meth = LOCATE_parser_prod___AGtExpr___replace_child;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  /* ./parser//parser_prod.nit:4610 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ASendExpr____n_expr(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser_prod, 4610);
+  }
+  fra.me.REG[3] = ATTR_parser_nodes___ASendExpr____n_expr(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+    REGB0 = REGB1;
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:4611 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:4612 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 4612);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:4613 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_AExpr, ID_AExpr)) /*cast AExpr*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 4613);
+      }
+      /* ./parser//parser_prod.nit:4614 */
+      ATTR_parser_nodes___ASendExpr____n_expr(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:4616 */
+      nit_abort("Aborted", NULL, LOCATE_parser_prod, 4616);
+    }
+    /* ./parser//parser_prod.nit:4618 */
+    goto label1;
+  }
+  /* ./parser//parser_prod.nit:4620 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ABinopExpr____n_expr2(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_expr2", LOCATE_parser_prod, 4620);
+  }
+  fra.me.REG[3] = ATTR_parser_nodes___ABinopExpr____n_expr2(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+    REGB0 = REGB1;
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:4621 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:4622 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 4622);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:4623 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_AExpr, ID_AExpr)) /*cast AExpr*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 4623);
+      }
+      /* ./parser//parser_prod.nit:4624 */
+      ATTR_parser_nodes___ABinopExpr____n_expr2(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:4626 */
+      nit_abort("Aborted", NULL, LOCATE_parser_prod, 4626);
+    }
+    /* ./parser//parser_prod.nit:4628 */
+    goto label1;
+  }
+  label1: while(0);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser_prod___AGtExpr___visit_all(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 4632;
+  fra.me.meth = LOCATE_parser_prod___AGtExpr___visit_all;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:4634 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ASendExpr____n_expr(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser_prod, 4634);
+  }
+  fra.me.REG[2] = ATTR_parser_nodes___ASendExpr____n_expr(fra.me.REG[0]);
+  CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser_prod.nit:4635 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ABinopExpr____n_expr2(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_expr2", LOCATE_parser_prod, 4635);
+  }
+  fra.me.REG[0] = ATTR_parser_nodes___ABinopExpr____n_expr2(fra.me.REG[0]);
+  CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser_prod___AGeExpr___empty_init(val_t p0, int* init_table){
+  int itpos157 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_AGeExpr].i;
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  if (init_table[itpos157]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 4639;
+  fra.me.meth = LOCATE_parser_prod___AGeExpr___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos157] = 1;
+  return;
+}
+void parser_prod___AGeExpr___init_ageexpr(val_t p0, val_t p1, val_t p2, int* init_table){
+  int itpos158 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_AGeExpr].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos158]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 4641;
+  fra.me.meth = LOCATE_parser_prod___AGeExpr___init_ageexpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  /* ./parser//parser_prod.nit:4646 */
+  CALL_parser_prod___AGeExpr___empty_init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  /* ./parser//parser_prod.nit:4647 */
+  REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Cast failed", NULL, LOCATE_parser_prod, 4647);
+  }
+  ATTR_parser_nodes___ASendExpr____n_expr(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./parser//parser_prod.nit:4648 */
+  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+    nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 4648);
+  }
+  CALL_parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  /* ./parser//parser_prod.nit:4649 */
+  REGB0 = TAG_Bool(fra.me.REG[2]!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Cast failed", NULL, LOCATE_parser_prod, 4649);
+  }
+  ATTR_parser_nodes___ABinopExpr____n_expr2(fra.me.REG[0]) = fra.me.REG[2];
+  /* ./parser//parser_prod.nit:4650 */
+  REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+    nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 4650);
+  }
+  CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  init_table[itpos158] = 1;
+  return;
+}
+void parser_prod___AGeExpr___replace_child(val_t p0, val_t p1, val_t p2){
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 4653;
+  fra.me.meth = LOCATE_parser_prod___AGeExpr___replace_child;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  /* ./parser//parser_prod.nit:4655 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ASendExpr____n_expr(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser_prod, 4655);
+  }
+  fra.me.REG[3] = ATTR_parser_nodes___ASendExpr____n_expr(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+    REGB0 = REGB1;
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:4656 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:4657 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 4657);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:4658 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_AExpr, ID_AExpr)) /*cast AExpr*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 4658);
+      }
+      /* ./parser//parser_prod.nit:4659 */
+      ATTR_parser_nodes___ASendExpr____n_expr(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:4661 */
+      nit_abort("Aborted", NULL, LOCATE_parser_prod, 4661);
+    }
+    /* ./parser//parser_prod.nit:4663 */
+    goto label1;
+  }
+  /* ./parser//parser_prod.nit:4665 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ABinopExpr____n_expr2(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_expr2", LOCATE_parser_prod, 4665);
+  }
+  fra.me.REG[3] = ATTR_parser_nodes___ABinopExpr____n_expr2(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+    REGB0 = REGB1;
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:4666 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:4667 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 4667);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:4668 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_AExpr, ID_AExpr)) /*cast AExpr*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 4668);
+      }
+      /* ./parser//parser_prod.nit:4669 */
+      ATTR_parser_nodes___ABinopExpr____n_expr2(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:4671 */
+      nit_abort("Aborted", NULL, LOCATE_parser_prod, 4671);
+    }
+    /* ./parser//parser_prod.nit:4673 */
+    goto label1;
+  }
+  label1: while(0);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser_prod___AGeExpr___visit_all(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 4677;
+  fra.me.meth = LOCATE_parser_prod___AGeExpr___visit_all;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:4679 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ASendExpr____n_expr(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser_prod, 4679);
+  }
+  fra.me.REG[2] = ATTR_parser_nodes___ASendExpr____n_expr(fra.me.REG[0]);
+  CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser_prod.nit:4680 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ABinopExpr____n_expr2(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_expr2", LOCATE_parser_prod, 4680);
+  }
+  fra.me.REG[0] = ATTR_parser_nodes___ABinopExpr____n_expr2(fra.me.REG[0]);
+  CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser_prod___AGgExpr___empty_init(val_t p0, int* init_table){
+  int itpos159 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_AGgExpr].i;
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  if (init_table[itpos159]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 4684;
+  fra.me.meth = LOCATE_parser_prod___AGgExpr___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos159] = 1;
+  return;
+}
+void parser_prod___AGgExpr___init_aggexpr(val_t p0, val_t p1, val_t p2, int* init_table){
+  int itpos160 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_AGgExpr].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos160]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 4686;
+  fra.me.meth = LOCATE_parser_prod___AGgExpr___init_aggexpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  /* ./parser//parser_prod.nit:4691 */
+  CALL_parser_prod___AGgExpr___empty_init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  /* ./parser//parser_prod.nit:4692 */
+  REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Cast failed", NULL, LOCATE_parser_prod, 4692);
+  }
+  ATTR_parser_nodes___ASendExpr____n_expr(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./parser//parser_prod.nit:4693 */
+  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+    nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 4693);
+  }
+  CALL_parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  /* ./parser//parser_prod.nit:4694 */
+  REGB0 = TAG_Bool(fra.me.REG[2]!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Cast failed", NULL, LOCATE_parser_prod, 4694);
+  }
+  ATTR_parser_nodes___ABinopExpr____n_expr2(fra.me.REG[0]) = fra.me.REG[2];
+  /* ./parser//parser_prod.nit:4695 */
+  REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+    nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 4695);
+  }
+  CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  init_table[itpos160] = 1;
+  return;
+}
+void parser_prod___AGgExpr___replace_child(val_t p0, val_t p1, val_t p2){
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 4698;
+  fra.me.meth = LOCATE_parser_prod___AGgExpr___replace_child;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  /* ./parser//parser_prod.nit:4700 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ASendExpr____n_expr(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser_prod, 4700);
+  }
+  fra.me.REG[3] = ATTR_parser_nodes___ASendExpr____n_expr(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+    REGB0 = REGB1;
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:4701 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:4702 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 4702);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:4703 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_AExpr, ID_AExpr)) /*cast AExpr*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 4703);
+      }
+      /* ./parser//parser_prod.nit:4704 */
+      ATTR_parser_nodes___ASendExpr____n_expr(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:4706 */
+      nit_abort("Aborted", NULL, LOCATE_parser_prod, 4706);
+    }
+    /* ./parser//parser_prod.nit:4708 */
+    goto label1;
+  }
+  /* ./parser//parser_prod.nit:4710 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ABinopExpr____n_expr2(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_expr2", LOCATE_parser_prod, 4710);
+  }
+  fra.me.REG[3] = ATTR_parser_nodes___ABinopExpr____n_expr2(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+    REGB0 = REGB1;
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:4711 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:4712 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 4712);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:4713 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_AExpr, ID_AExpr)) /*cast AExpr*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 4713);
+      }
+      /* ./parser//parser_prod.nit:4714 */
+      ATTR_parser_nodes___ABinopExpr____n_expr2(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:4716 */
+      nit_abort("Aborted", NULL, LOCATE_parser_prod, 4716);
+    }
+    /* ./parser//parser_prod.nit:4718 */
+    goto label1;
+  }
+  label1: while(0);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser_prod___AGgExpr___visit_all(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 4722;
+  fra.me.meth = LOCATE_parser_prod___AGgExpr___visit_all;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:4724 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ASendExpr____n_expr(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser_prod, 4724);
+  }
+  fra.me.REG[2] = ATTR_parser_nodes___ASendExpr____n_expr(fra.me.REG[0]);
+  CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser_prod.nit:4725 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ABinopExpr____n_expr2(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_expr2", LOCATE_parser_prod, 4725);
+  }
+  fra.me.REG[0] = ATTR_parser_nodes___ABinopExpr____n_expr2(fra.me.REG[0]);
+  CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser_prod___AIsaExpr___empty_init(val_t p0, int* init_table){
+  int itpos161 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_AIsaExpr].i;
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  if (init_table[itpos161]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 4729;
+  fra.me.meth = LOCATE_parser_prod___AIsaExpr___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos161] = 1;
+  return;
+}
+void parser_prod___AIsaExpr___init_aisaexpr(val_t p0, val_t p1, val_t p2, int* init_table){
+  int itpos162 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_AIsaExpr].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos162]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 4731;
+  fra.me.meth = LOCATE_parser_prod___AIsaExpr___init_aisaexpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  /* ./parser//parser_prod.nit:4736 */
+  CALL_parser_prod___AIsaExpr___empty_init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  /* ./parser//parser_prod.nit:4737 */
+  REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Cast failed", NULL, LOCATE_parser_prod, 4737);
+  }
+  ATTR_parser_nodes___AIsaExpr____n_expr(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./parser//parser_prod.nit:4738 */
+  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+    nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 4738);
+  }
+  CALL_parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  /* ./parser//parser_prod.nit:4739 */
+  REGB0 = TAG_Bool(fra.me.REG[2]!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Cast failed", NULL, LOCATE_parser_prod, 4739);
+  }
+  ATTR_parser_nodes___AIsaExpr____n_type(fra.me.REG[0]) = fra.me.REG[2];
+  /* ./parser//parser_prod.nit:4740 */
+  REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+    nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 4740);
+  }
+  CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  init_table[itpos162] = 1;
+  return;
+}
+void parser_prod___AIsaExpr___replace_child(val_t p0, val_t p1, val_t p2){
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 4743;
+  fra.me.meth = LOCATE_parser_prod___AIsaExpr___replace_child;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  /* ./parser//parser_prod.nit:4745 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AIsaExpr____n_expr(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser_prod, 4745);
+  }
+  fra.me.REG[3] = ATTR_parser_nodes___AIsaExpr____n_expr(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+    REGB0 = REGB1;
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:4746 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:4747 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 4747);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:4748 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_AExpr, ID_AExpr)) /*cast AExpr*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 4748);
+      }
+      /* ./parser//parser_prod.nit:4749 */
+      ATTR_parser_nodes___AIsaExpr____n_expr(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:4751 */
+      nit_abort("Aborted", NULL, LOCATE_parser_prod, 4751);
+    }
+    /* ./parser//parser_prod.nit:4753 */
+    goto label1;
+  }
+  /* ./parser//parser_prod.nit:4755 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AIsaExpr____n_type(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_type", LOCATE_parser_prod, 4755);
+  }
+  fra.me.REG[3] = ATTR_parser_nodes___AIsaExpr____n_type(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+    REGB0 = REGB1;
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:4756 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:4757 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 4757);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:4758 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_AType, ID_AType)) /*cast AType*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 4758);
+      }
+      /* ./parser//parser_prod.nit:4759 */
+      ATTR_parser_nodes___AIsaExpr____n_type(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:4761 */
+      nit_abort("Aborted", NULL, LOCATE_parser_prod, 4761);
+    }
+    /* ./parser//parser_prod.nit:4763 */
+    goto label1;
+  }
+  label1: while(0);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser_prod___AIsaExpr___visit_all(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 4767;
+  fra.me.meth = LOCATE_parser_prod___AIsaExpr___visit_all;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:4769 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AIsaExpr____n_expr(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser_prod, 4769);
+  }
+  fra.me.REG[2] = ATTR_parser_nodes___AIsaExpr____n_expr(fra.me.REG[0]);
+  CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser_prod.nit:4770 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AIsaExpr____n_type(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_type", LOCATE_parser_prod, 4770);
+  }
+  fra.me.REG[0] = ATTR_parser_nodes___AIsaExpr____n_type(fra.me.REG[0]);
+  CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser_prod___APlusExpr___empty_init(val_t p0, int* init_table){
+  int itpos163 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_APlusExpr].i;
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  if (init_table[itpos163]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 4774;
+  fra.me.meth = LOCATE_parser_prod___APlusExpr___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos163] = 1;
+  return;
+}
+void parser_prod___APlusExpr___init_aplusexpr(val_t p0, val_t p1, val_t p2, int* init_table){
+  int itpos164 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_APlusExpr].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos164]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 4776;
+  fra.me.meth = LOCATE_parser_prod___APlusExpr___init_aplusexpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  /* ./parser//parser_prod.nit:4781 */
+  CALL_parser_prod___APlusExpr___empty_init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  /* ./parser//parser_prod.nit:4782 */
+  REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Cast failed", NULL, LOCATE_parser_prod, 4782);
+  }
+  ATTR_parser_nodes___ASendExpr____n_expr(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./parser//parser_prod.nit:4783 */
+  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+    nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 4783);
+  }
+  CALL_parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  /* ./parser//parser_prod.nit:4784 */
+  REGB0 = TAG_Bool(fra.me.REG[2]!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Cast failed", NULL, LOCATE_parser_prod, 4784);
+  }
+  ATTR_parser_nodes___ABinopExpr____n_expr2(fra.me.REG[0]) = fra.me.REG[2];
+  /* ./parser//parser_prod.nit:4785 */
+  REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+    nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 4785);
+  }
+  CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  init_table[itpos164] = 1;
+  return;
+}
+void parser_prod___APlusExpr___replace_child(val_t p0, val_t p1, val_t p2){
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 4788;
+  fra.me.meth = LOCATE_parser_prod___APlusExpr___replace_child;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  /* ./parser//parser_prod.nit:4790 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ASendExpr____n_expr(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser_prod, 4790);
+  }
+  fra.me.REG[3] = ATTR_parser_nodes___ASendExpr____n_expr(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+    REGB0 = REGB1;
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:4791 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:4792 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 4792);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:4793 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_AExpr, ID_AExpr)) /*cast AExpr*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 4793);
+      }
+      /* ./parser//parser_prod.nit:4794 */
+      ATTR_parser_nodes___ASendExpr____n_expr(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:4796 */
+      nit_abort("Aborted", NULL, LOCATE_parser_prod, 4796);
+    }
+    /* ./parser//parser_prod.nit:4798 */
+    goto label1;
+  }
+  /* ./parser//parser_prod.nit:4800 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ABinopExpr____n_expr2(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_expr2", LOCATE_parser_prod, 4800);
+  }
+  fra.me.REG[3] = ATTR_parser_nodes___ABinopExpr____n_expr2(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+    REGB0 = REGB1;
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:4801 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:4802 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 4802);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:4803 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_AExpr, ID_AExpr)) /*cast AExpr*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 4803);
+      }
+      /* ./parser//parser_prod.nit:4804 */
+      ATTR_parser_nodes___ABinopExpr____n_expr2(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:4806 */
+      nit_abort("Aborted", NULL, LOCATE_parser_prod, 4806);
+    }
+    /* ./parser//parser_prod.nit:4808 */
+    goto label1;
+  }
+  label1: while(0);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser_prod___APlusExpr___visit_all(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 4812;
+  fra.me.meth = LOCATE_parser_prod___APlusExpr___visit_all;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:4814 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ASendExpr____n_expr(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser_prod, 4814);
+  }
+  fra.me.REG[2] = ATTR_parser_nodes___ASendExpr____n_expr(fra.me.REG[0]);
+  CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser_prod.nit:4815 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ABinopExpr____n_expr2(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_expr2", LOCATE_parser_prod, 4815);
+  }
+  fra.me.REG[0] = ATTR_parser_nodes___ABinopExpr____n_expr2(fra.me.REG[0]);
+  CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser_prod___AMinusExpr___empty_init(val_t p0, int* init_table){
+  int itpos165 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_AMinusExpr].i;
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  if (init_table[itpos165]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 4819;
+  fra.me.meth = LOCATE_parser_prod___AMinusExpr___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos165] = 1;
+  return;
+}
+void parser_prod___AMinusExpr___init_aminusexpr(val_t p0, val_t p1, val_t p2, int* init_table){
+  int itpos166 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_AMinusExpr].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos166]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 4821;
+  fra.me.meth = LOCATE_parser_prod___AMinusExpr___init_aminusexpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  /* ./parser//parser_prod.nit:4826 */
+  CALL_parser_prod___AMinusExpr___empty_init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  /* ./parser//parser_prod.nit:4827 */
+  REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Cast failed", NULL, LOCATE_parser_prod, 4827);
+  }
+  ATTR_parser_nodes___ASendExpr____n_expr(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./parser//parser_prod.nit:4828 */
+  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+    nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 4828);
+  }
+  CALL_parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  /* ./parser//parser_prod.nit:4829 */
+  REGB0 = TAG_Bool(fra.me.REG[2]!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Cast failed", NULL, LOCATE_parser_prod, 4829);
+  }
+  ATTR_parser_nodes___ABinopExpr____n_expr2(fra.me.REG[0]) = fra.me.REG[2];
+  /* ./parser//parser_prod.nit:4830 */
+  REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+    nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 4830);
+  }
+  CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  init_table[itpos166] = 1;
+  return;
+}
+void parser_prod___AMinusExpr___replace_child(val_t p0, val_t p1, val_t p2){
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 4833;
+  fra.me.meth = LOCATE_parser_prod___AMinusExpr___replace_child;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  /* ./parser//parser_prod.nit:4835 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ASendExpr____n_expr(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser_prod, 4835);
+  }
+  fra.me.REG[3] = ATTR_parser_nodes___ASendExpr____n_expr(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+    REGB0 = REGB1;
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:4836 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:4837 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 4837);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:4838 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_AExpr, ID_AExpr)) /*cast AExpr*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 4838);
+      }
+      /* ./parser//parser_prod.nit:4839 */
+      ATTR_parser_nodes___ASendExpr____n_expr(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:4841 */
+      nit_abort("Aborted", NULL, LOCATE_parser_prod, 4841);
+    }
+    /* ./parser//parser_prod.nit:4843 */
+    goto label1;
+  }
+  /* ./parser//parser_prod.nit:4845 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ABinopExpr____n_expr2(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_expr2", LOCATE_parser_prod, 4845);
+  }
+  fra.me.REG[3] = ATTR_parser_nodes___ABinopExpr____n_expr2(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+    REGB0 = REGB1;
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:4846 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:4847 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 4847);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:4848 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_AExpr, ID_AExpr)) /*cast AExpr*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 4848);
+      }
+      /* ./parser//parser_prod.nit:4849 */
+      ATTR_parser_nodes___ABinopExpr____n_expr2(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:4851 */
+      nit_abort("Aborted", NULL, LOCATE_parser_prod, 4851);
+    }
+    /* ./parser//parser_prod.nit:4853 */
+    goto label1;
+  }
+  label1: while(0);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser_prod___AMinusExpr___visit_all(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 4857;
+  fra.me.meth = LOCATE_parser_prod___AMinusExpr___visit_all;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:4859 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ASendExpr____n_expr(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser_prod, 4859);
+  }
+  fra.me.REG[2] = ATTR_parser_nodes___ASendExpr____n_expr(fra.me.REG[0]);
+  CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser_prod.nit:4860 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ABinopExpr____n_expr2(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_expr2", LOCATE_parser_prod, 4860);
+  }
+  fra.me.REG[0] = ATTR_parser_nodes___ABinopExpr____n_expr2(fra.me.REG[0]);
+  CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser_prod___AStarshipExpr___empty_init(val_t p0, int* init_table){
+  int itpos167 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_AStarshipExpr].i;
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  if (init_table[itpos167]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 4864;
+  fra.me.meth = LOCATE_parser_prod___AStarshipExpr___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos167] = 1;
+  return;
+}
+void parser_prod___AStarshipExpr___init_astarshipexpr(val_t p0, val_t p1, val_t p2, int* init_table){
+  int itpos168 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_AStarshipExpr].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos168]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 4866;
+  fra.me.meth = LOCATE_parser_prod___AStarshipExpr___init_astarshipexpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  /* ./parser//parser_prod.nit:4871 */
+  CALL_parser_prod___AStarshipExpr___empty_init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  /* ./parser//parser_prod.nit:4872 */
+  REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Cast failed", NULL, LOCATE_parser_prod, 4872);
+  }
+  ATTR_parser_nodes___ASendExpr____n_expr(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./parser//parser_prod.nit:4873 */
+  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+    nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 4873);
+  }
+  CALL_parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  /* ./parser//parser_prod.nit:4874 */
+  REGB0 = TAG_Bool(fra.me.REG[2]!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Cast failed", NULL, LOCATE_parser_prod, 4874);
+  }
+  ATTR_parser_nodes___ABinopExpr____n_expr2(fra.me.REG[0]) = fra.me.REG[2];
+  /* ./parser//parser_prod.nit:4875 */
+  REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+    nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 4875);
+  }
+  CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  init_table[itpos168] = 1;
+  return;
+}
+void parser_prod___AStarshipExpr___replace_child(val_t p0, val_t p1, val_t p2){
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 4878;
+  fra.me.meth = LOCATE_parser_prod___AStarshipExpr___replace_child;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  /* ./parser//parser_prod.nit:4880 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ASendExpr____n_expr(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser_prod, 4880);
+  }
+  fra.me.REG[3] = ATTR_parser_nodes___ASendExpr____n_expr(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+    REGB0 = REGB1;
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:4881 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:4882 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 4882);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:4883 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_AExpr, ID_AExpr)) /*cast AExpr*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 4883);
+      }
+      /* ./parser//parser_prod.nit:4884 */
+      ATTR_parser_nodes___ASendExpr____n_expr(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:4886 */
+      nit_abort("Aborted", NULL, LOCATE_parser_prod, 4886);
+    }
+    /* ./parser//parser_prod.nit:4888 */
+    goto label1;
+  }
+  /* ./parser//parser_prod.nit:4890 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ABinopExpr____n_expr2(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_expr2", LOCATE_parser_prod, 4890);
+  }
+  fra.me.REG[3] = ATTR_parser_nodes___ABinopExpr____n_expr2(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+    REGB0 = REGB1;
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:4891 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:4892 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 4892);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:4893 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_AExpr, ID_AExpr)) /*cast AExpr*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 4893);
+      }
+      /* ./parser//parser_prod.nit:4894 */
+      ATTR_parser_nodes___ABinopExpr____n_expr2(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:4896 */
+      nit_abort("Aborted", NULL, LOCATE_parser_prod, 4896);
+    }
+    /* ./parser//parser_prod.nit:4898 */
+    goto label1;
+  }
+  label1: while(0);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser_prod___AStarshipExpr___visit_all(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 4902;
+  fra.me.meth = LOCATE_parser_prod___AStarshipExpr___visit_all;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:4904 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ASendExpr____n_expr(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser_prod, 4904);
+  }
+  fra.me.REG[2] = ATTR_parser_nodes___ASendExpr____n_expr(fra.me.REG[0]);
+  CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser_prod.nit:4905 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ABinopExpr____n_expr2(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_expr2", LOCATE_parser_prod, 4905);
+  }
+  fra.me.REG[0] = ATTR_parser_nodes___ABinopExpr____n_expr2(fra.me.REG[0]);
+  CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser_prod___AStarExpr___empty_init(val_t p0, int* init_table){
+  int itpos169 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_AStarExpr].i;
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  if (init_table[itpos169]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 4909;
+  fra.me.meth = LOCATE_parser_prod___AStarExpr___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos169] = 1;
+  return;
+}
+void parser_prod___AStarExpr___init_astarexpr(val_t p0, val_t p1, val_t p2, int* init_table){
+  int itpos170 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_AStarExpr].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos170]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 4911;
+  fra.me.meth = LOCATE_parser_prod___AStarExpr___init_astarexpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  /* ./parser//parser_prod.nit:4916 */
+  CALL_parser_prod___AStarExpr___empty_init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  /* ./parser//parser_prod.nit:4917 */
+  REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Cast failed", NULL, LOCATE_parser_prod, 4917);
+  }
+  ATTR_parser_nodes___ASendExpr____n_expr(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./parser//parser_prod.nit:4918 */
+  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+    nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 4918);
+  }
+  CALL_parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  /* ./parser//parser_prod.nit:4919 */
+  REGB0 = TAG_Bool(fra.me.REG[2]!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Cast failed", NULL, LOCATE_parser_prod, 4919);
+  }
+  ATTR_parser_nodes___ABinopExpr____n_expr2(fra.me.REG[0]) = fra.me.REG[2];
+  /* ./parser//parser_prod.nit:4920 */
+  REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+    nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 4920);
+  }
+  CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  init_table[itpos170] = 1;
+  return;
+}
+void parser_prod___AStarExpr___replace_child(val_t p0, val_t p1, val_t p2){
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 4923;
+  fra.me.meth = LOCATE_parser_prod___AStarExpr___replace_child;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  /* ./parser//parser_prod.nit:4925 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ASendExpr____n_expr(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser_prod, 4925);
+  }
+  fra.me.REG[3] = ATTR_parser_nodes___ASendExpr____n_expr(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+    REGB0 = REGB1;
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:4926 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:4927 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 4927);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:4928 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_AExpr, ID_AExpr)) /*cast AExpr*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 4928);
+      }
+      /* ./parser//parser_prod.nit:4929 */
+      ATTR_parser_nodes___ASendExpr____n_expr(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:4931 */
+      nit_abort("Aborted", NULL, LOCATE_parser_prod, 4931);
+    }
+    /* ./parser//parser_prod.nit:4933 */
+    goto label1;
+  }
+  /* ./parser//parser_prod.nit:4935 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ABinopExpr____n_expr2(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_expr2", LOCATE_parser_prod, 4935);
+  }
+  fra.me.REG[3] = ATTR_parser_nodes___ABinopExpr____n_expr2(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+    REGB0 = REGB1;
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:4936 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:4937 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 4937);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:4938 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_AExpr, ID_AExpr)) /*cast AExpr*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 4938);
+      }
+      /* ./parser//parser_prod.nit:4939 */
+      ATTR_parser_nodes___ABinopExpr____n_expr2(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:4941 */
+      nit_abort("Aborted", NULL, LOCATE_parser_prod, 4941);
+    }
+    /* ./parser//parser_prod.nit:4943 */
+    goto label1;
+  }
+  label1: while(0);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser_prod___AStarExpr___visit_all(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 4947;
+  fra.me.meth = LOCATE_parser_prod___AStarExpr___visit_all;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:4949 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ASendExpr____n_expr(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser_prod, 4949);
+  }
+  fra.me.REG[2] = ATTR_parser_nodes___ASendExpr____n_expr(fra.me.REG[0]);
+  CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser_prod.nit:4950 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ABinopExpr____n_expr2(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_expr2", LOCATE_parser_prod, 4950);
+  }
+  fra.me.REG[0] = ATTR_parser_nodes___ABinopExpr____n_expr2(fra.me.REG[0]);
+  CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser_prod___ASlashExpr___empty_init(val_t p0, int* init_table){
+  int itpos171 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ASlashExpr].i;
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  if (init_table[itpos171]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 4954;
+  fra.me.meth = LOCATE_parser_prod___ASlashExpr___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos171] = 1;
+  return;
+}
+void parser_prod___ASlashExpr___init_aslashexpr(val_t p0, val_t p1, val_t p2, int* init_table){
+  int itpos172 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ASlashExpr].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos172]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 4956;
+  fra.me.meth = LOCATE_parser_prod___ASlashExpr___init_aslashexpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  /* ./parser//parser_prod.nit:4961 */
+  CALL_parser_prod___ASlashExpr___empty_init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  /* ./parser//parser_prod.nit:4962 */
+  REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Cast failed", NULL, LOCATE_parser_prod, 4962);
+  }
+  ATTR_parser_nodes___ASendExpr____n_expr(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./parser//parser_prod.nit:4963 */
+  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+    nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 4963);
+  }
+  CALL_parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  /* ./parser//parser_prod.nit:4964 */
+  REGB0 = TAG_Bool(fra.me.REG[2]!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Cast failed", NULL, LOCATE_parser_prod, 4964);
+  }
+  ATTR_parser_nodes___ABinopExpr____n_expr2(fra.me.REG[0]) = fra.me.REG[2];
+  /* ./parser//parser_prod.nit:4965 */
+  REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+    nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 4965);
+  }
+  CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  init_table[itpos172] = 1;
+  return;
+}
+void parser_prod___ASlashExpr___replace_child(val_t p0, val_t p1, val_t p2){
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 4968;
+  fra.me.meth = LOCATE_parser_prod___ASlashExpr___replace_child;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  /* ./parser//parser_prod.nit:4970 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ASendExpr____n_expr(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser_prod, 4970);
+  }
+  fra.me.REG[3] = ATTR_parser_nodes___ASendExpr____n_expr(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+    REGB0 = REGB1;
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:4971 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:4972 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 4972);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:4973 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_AExpr, ID_AExpr)) /*cast AExpr*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 4973);
+      }
+      /* ./parser//parser_prod.nit:4974 */
+      ATTR_parser_nodes___ASendExpr____n_expr(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:4976 */
+      nit_abort("Aborted", NULL, LOCATE_parser_prod, 4976);
+    }
+    /* ./parser//parser_prod.nit:4978 */
+    goto label1;
+  }
+  /* ./parser//parser_prod.nit:4980 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ABinopExpr____n_expr2(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_expr2", LOCATE_parser_prod, 4980);
+  }
+  fra.me.REG[3] = ATTR_parser_nodes___ABinopExpr____n_expr2(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+    REGB0 = REGB1;
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:4981 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:4982 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 4982);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:4983 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_AExpr, ID_AExpr)) /*cast AExpr*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 4983);
+      }
+      /* ./parser//parser_prod.nit:4984 */
+      ATTR_parser_nodes___ABinopExpr____n_expr2(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:4986 */
+      nit_abort("Aborted", NULL, LOCATE_parser_prod, 4986);
+    }
+    /* ./parser//parser_prod.nit:4988 */
+    goto label1;
+  }
+  label1: while(0);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser_prod___ASlashExpr___visit_all(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 4992;
+  fra.me.meth = LOCATE_parser_prod___ASlashExpr___visit_all;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:4994 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ASendExpr____n_expr(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser_prod, 4994);
+  }
+  fra.me.REG[2] = ATTR_parser_nodes___ASendExpr____n_expr(fra.me.REG[0]);
+  CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser_prod.nit:4995 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ABinopExpr____n_expr2(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_expr2", LOCATE_parser_prod, 4995);
+  }
+  fra.me.REG[0] = ATTR_parser_nodes___ABinopExpr____n_expr2(fra.me.REG[0]);
+  CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser_prod___APercentExpr___empty_init(val_t p0, int* init_table){
+  int itpos173 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_APercentExpr].i;
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  if (init_table[itpos173]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 4999;
+  fra.me.meth = LOCATE_parser_prod___APercentExpr___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos173] = 1;
+  return;
+}
+void parser_prod___APercentExpr___init_apercentexpr(val_t p0, val_t p1, val_t p2, int* init_table){
+  int itpos174 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_APercentExpr].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos174]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 5001;
+  fra.me.meth = LOCATE_parser_prod___APercentExpr___init_apercentexpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  /* ./parser//parser_prod.nit:5006 */
+  CALL_parser_prod___APercentExpr___empty_init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  /* ./parser//parser_prod.nit:5007 */
+  REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Cast failed", NULL, LOCATE_parser_prod, 5007);
+  }
+  ATTR_parser_nodes___ASendExpr____n_expr(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./parser//parser_prod.nit:5008 */
+  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+    nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 5008);
+  }
+  CALL_parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  /* ./parser//parser_prod.nit:5009 */
+  REGB0 = TAG_Bool(fra.me.REG[2]!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Cast failed", NULL, LOCATE_parser_prod, 5009);
+  }
+  ATTR_parser_nodes___ABinopExpr____n_expr2(fra.me.REG[0]) = fra.me.REG[2];
+  /* ./parser//parser_prod.nit:5010 */
+  REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+    nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 5010);
+  }
+  CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  init_table[itpos174] = 1;
+  return;
+}
+void parser_prod___APercentExpr___replace_child(val_t p0, val_t p1, val_t p2){
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 5013;
+  fra.me.meth = LOCATE_parser_prod___APercentExpr___replace_child;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  /* ./parser//parser_prod.nit:5015 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ASendExpr____n_expr(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser_prod, 5015);
+  }
+  fra.me.REG[3] = ATTR_parser_nodes___ASendExpr____n_expr(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+    REGB0 = REGB1;
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:5016 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:5017 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 5017);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:5018 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_AExpr, ID_AExpr)) /*cast AExpr*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 5018);
+      }
+      /* ./parser//parser_prod.nit:5019 */
+      ATTR_parser_nodes___ASendExpr____n_expr(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:5021 */
+      nit_abort("Aborted", NULL, LOCATE_parser_prod, 5021);
+    }
+    /* ./parser//parser_prod.nit:5023 */
+    goto label1;
+  }
+  /* ./parser//parser_prod.nit:5025 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ABinopExpr____n_expr2(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_expr2", LOCATE_parser_prod, 5025);
+  }
+  fra.me.REG[3] = ATTR_parser_nodes___ABinopExpr____n_expr2(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+    REGB0 = REGB1;
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:5026 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:5027 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 5027);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:5028 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_AExpr, ID_AExpr)) /*cast AExpr*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 5028);
+      }
+      /* ./parser//parser_prod.nit:5029 */
+      ATTR_parser_nodes___ABinopExpr____n_expr2(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:5031 */
+      nit_abort("Aborted", NULL, LOCATE_parser_prod, 5031);
+    }
+    /* ./parser//parser_prod.nit:5033 */
+    goto label1;
+  }
+  label1: while(0);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser_prod___APercentExpr___visit_all(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 5037;
+  fra.me.meth = LOCATE_parser_prod___APercentExpr___visit_all;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:5039 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ASendExpr____n_expr(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser_prod, 5039);
+  }
+  fra.me.REG[2] = ATTR_parser_nodes___ASendExpr____n_expr(fra.me.REG[0]);
+  CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser_prod.nit:5040 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ABinopExpr____n_expr2(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_expr2", LOCATE_parser_prod, 5040);
+  }
+  fra.me.REG[0] = ATTR_parser_nodes___ABinopExpr____n_expr2(fra.me.REG[0]);
+  CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser_prod___AUminusExpr___empty_init(val_t p0, int* init_table){
+  int itpos175 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_AUminusExpr].i;
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  if (init_table[itpos175]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 5044;
+  fra.me.meth = LOCATE_parser_prod___AUminusExpr___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos175] = 1;
+  return;
+}
+void parser_prod___AUminusExpr___init_auminusexpr(val_t p0, val_t p1, val_t p2, int* init_table){
+  int itpos176 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_AUminusExpr].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos176]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 5046;
+  fra.me.meth = LOCATE_parser_prod___AUminusExpr___init_auminusexpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  /* ./parser//parser_prod.nit:5051 */
+  CALL_parser_prod___AUminusExpr___empty_init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  /* ./parser//parser_prod.nit:5052 */
+  REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Cast failed", NULL, LOCATE_parser_prod, 5052);
+  }
+  ATTR_parser_nodes___AUminusExpr____n_minus(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./parser//parser_prod.nit:5053 */
+  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+    nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 5053);
+  }
+  CALL_parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  /* ./parser//parser_prod.nit:5054 */
+  REGB0 = TAG_Bool(fra.me.REG[2]!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Cast failed", NULL, LOCATE_parser_prod, 5054);
+  }
+  ATTR_parser_nodes___ASendExpr____n_expr(fra.me.REG[0]) = fra.me.REG[2];
+  /* ./parser//parser_prod.nit:5055 */
+  REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+    nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 5055);
+  }
+  CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  init_table[itpos176] = 1;
+  return;
+}
+void parser_prod___AUminusExpr___replace_child(val_t p0, val_t p1, val_t p2){
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 5058;
+  fra.me.meth = LOCATE_parser_prod___AUminusExpr___replace_child;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  /* ./parser//parser_prod.nit:5060 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AUminusExpr____n_minus(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_minus", LOCATE_parser_prod, 5060);
+  }
+  fra.me.REG[3] = ATTR_parser_nodes___AUminusExpr____n_minus(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+    REGB0 = REGB1;
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:5061 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:5062 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 5062);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:5063 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_TMinus, ID_TMinus)) /*cast TMinus*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 5063);
+      }
+      /* ./parser//parser_prod.nit:5064 */
+      ATTR_parser_nodes___AUminusExpr____n_minus(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:5066 */
+      nit_abort("Aborted", NULL, LOCATE_parser_prod, 5066);
+    }
+    /* ./parser//parser_prod.nit:5068 */
+    goto label1;
+  }
+  /* ./parser//parser_prod.nit:5070 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ASendExpr____n_expr(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser_prod, 5070);
+  }
+  fra.me.REG[3] = ATTR_parser_nodes___ASendExpr____n_expr(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+    REGB0 = REGB1;
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:5071 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:5072 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 5072);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:5073 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_AExpr, ID_AExpr)) /*cast AExpr*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 5073);
+      }
+      /* ./parser//parser_prod.nit:5074 */
+      ATTR_parser_nodes___ASendExpr____n_expr(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:5076 */
+      nit_abort("Aborted", NULL, LOCATE_parser_prod, 5076);
+    }
+    /* ./parser//parser_prod.nit:5078 */
+    goto label1;
+  }
+  label1: while(0);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser_prod___AUminusExpr___visit_all(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 5082;
+  fra.me.meth = LOCATE_parser_prod___AUminusExpr___visit_all;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:5084 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AUminusExpr____n_minus(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_minus", LOCATE_parser_prod, 5084);
+  }
+  fra.me.REG[2] = ATTR_parser_nodes___AUminusExpr____n_minus(fra.me.REG[0]);
+  CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser_prod.nit:5085 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ASendExpr____n_expr(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser_prod, 5085);
+  }
+  fra.me.REG[0] = ATTR_parser_nodes___ASendExpr____n_expr(fra.me.REG[0]);
+  CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser_prod___ANewExpr___empty_init(val_t p0, int* init_table){
+  int itpos177 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ANewExpr].i;
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  if (init_table[itpos177]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 5089;
+  fra.me.meth = LOCATE_parser_prod___ANewExpr___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos177] = 1;
+  return;
+}
+void parser_prod___ANewExpr___init_anewexpr(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4, int* init_table){
+  int itpos178 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ANewExpr].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  if (init_table[itpos178]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 5091;
+  fra.me.meth = LOCATE_parser_prod___ANewExpr___init_anewexpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  fra.me.REG[3] = p3;
+  fra.me.REG[4] = p4;
+  /* ./parser//parser_prod.nit:5098 */
+  CALL_parser_prod___ANewExpr___empty_init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  /* ./parser//parser_prod.nit:5099 */
+  REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Cast failed", NULL, LOCATE_parser_prod, 5099);
+  }
+  ATTR_parser_nodes___ANewExpr____n_kwnew(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./parser//parser_prod.nit:5100 */
+  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+    nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 5100);
+  }
+  CALL_parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  /* ./parser//parser_prod.nit:5101 */
+  REGB0 = TAG_Bool(fra.me.REG[2]!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Cast failed", NULL, LOCATE_parser_prod, 5101);
+  }
+  ATTR_parser_nodes___ANewExpr____n_type(fra.me.REG[0]) = fra.me.REG[2];
+  /* ./parser//parser_prod.nit:5102 */
+  REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+    nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 5102);
+  }
+  CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+  /* ./parser//parser_prod.nit:5103 */
+  ATTR_parser_nodes___ANewExpr____n_id(fra.me.REG[0]) = fra.me.REG[3];
+  /* ./parser//parser_prod.nit:5104 */
+  REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:5105 */
+    REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+      nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 5105);
+    }
+    CALL_parser_prod___ANode___parent__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[0]);
+  }
+  CALL_abstract_collection___Collection___iterate(fra.me.REG[4])(fra.me.REG[4], (&(fra.me)), ((fun_t)OC_parser_prod___ANewExpr___init_anewexpr_1));
+  stack_frame_head = fra.me.prev;
+  init_table[itpos178] = 1;
+  return;
+}
+  void OC_parser_prod___ANewExpr___init_anewexpr_1(struct stack_frame_t *closctx, val_t p0, struct stack_frame_t *closctx_param, fun_t clos_fun0){
+    struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+    val_t REGB0;
+    fun_t CREG[1];
+    val_t tmp;
+    /* ./parser//parser_prod.nit:5107 */
+    fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+    fra.me.file = LOCATE_parser_prod;
+    fra.me.line = 0;
+    fra.me.meth = LOCATE_parser_prod___ANewExpr___init_anewexpr;
+    fra.me.has_broke = 0;
+    fra.me.REG_size = 2;
+    fra.me.REG[0] = NIT_NULL;
+    fra.me.REG[1] = NIT_NULL;
+    fra.me.closure_ctx = closctx_param;
+    fra.me.closure_funs = CREG;
+    fra.me.REG[0] = p0;
+    CREG[0] = clos_fun0;
+    /* ./parser//parser_prod.nit:5108 */
+    REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[0], COLOR_AExpr, ID_AExpr)) /*cast AExpr*/;
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      nit_abort("Assert failed", NULL, LOCATE_parser_prod, 5108);
+    }
+    /* ./parser//parser_prod.nit:5109 */
+    REGB0 = TAG_Bool(ATTR_parser_nodes___ANewExpr____n_args(closctx->REG[0])!=NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      nit_abort("Uninitialized attribute %s", "_n_args", LOCATE_parser_prod, 5109);
+    }
+    fra.me.REG[1] = ATTR_parser_nodes___ANewExpr____n_args(closctx->REG[0]);
+    CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+    /* ./parser//parser_prod.nit:5110 */
+    CALL_parser_prod___ANode___parent__eq(fra.me.REG[0])(fra.me.REG[0], closctx->REG[0]);
+    stack_frame_head = fra.me.prev;
+    return;
+  }
+void parser_prod___ANewExpr___replace_child(val_t p0, val_t p1, val_t p2){
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t REGB2;
+  val_t REGB3;
+  val_t REGB4;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 5114;
+  fra.me.meth = LOCATE_parser_prod___ANewExpr___replace_child;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  /* ./parser//parser_prod.nit:5116 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ANewExpr____n_kwnew(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_kwnew", LOCATE_parser_prod, 5116);
+  }
+  fra.me.REG[3] = ATTR_parser_nodes___ANewExpr____n_kwnew(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+    REGB0 = REGB1;
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:5117 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:5118 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 5118);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:5119 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_TKwnew, ID_TKwnew)) /*cast TKwnew*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 5119);
+      }
+      /* ./parser//parser_prod.nit:5120 */
+      ATTR_parser_nodes___ANewExpr____n_kwnew(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:5122 */
+      nit_abort("Aborted", NULL, LOCATE_parser_prod, 5122);
+    }
+    /* ./parser//parser_prod.nit:5124 */
+    goto label1;
+  }
+  /* ./parser//parser_prod.nit:5126 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ANewExpr____n_type(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_type", LOCATE_parser_prod, 5126);
+  }
+  fra.me.REG[3] = ATTR_parser_nodes___ANewExpr____n_type(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+    REGB0 = REGB1;
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:5127 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:5128 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 5128);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:5129 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_AType, ID_AType)) /*cast AType*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 5129);
+      }
+      /* ./parser//parser_prod.nit:5130 */
+      ATTR_parser_nodes___ANewExpr____n_type(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:5132 */
+      nit_abort("Aborted", NULL, LOCATE_parser_prod, 5132);
+    }
+    /* ./parser//parser_prod.nit:5134 */
+    goto label1;
+  }
+  /* ./parser//parser_prod.nit:5136 */
+  fra.me.REG[3] = ATTR_parser_nodes___ANewExpr____n_id(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+      REGB0 = REGB1;
+    }
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:5137 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:5138 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 5138);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:5139 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_TId, ID_TId)) /*cast TId*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 5139);
+      }
+      /* ./parser//parser_prod.nit:5140 */
+      ATTR_parser_nodes___ANewExpr____n_id(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:5142 */
+      ATTR_parser_nodes___ANewExpr____n_id(fra.me.REG[0]) = NIT_NULL;
+    }
+    /* ./parser//parser_prod.nit:5144 */
+    goto label1;
+  }
+  /* ./parser//parser_prod.nit:5146 */
+  REGB0 = TAG_Int(0);
+  REGB1 = TAG_Bool(ATTR_parser_nodes___ANewExpr____n_args(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB1)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_args", LOCATE_parser_prod, 5146);
+  }
+  fra.me.REG[3] = ATTR_parser_nodes___ANewExpr____n_args(fra.me.REG[0]);
+  REGB1 = CALL_abstract_collection___Collection___length(fra.me.REG[3])(fra.me.REG[3]);
+  /* ./../lib/standard//kernel.nit:332 */
+  while(1) {
+    /* ./../lib/standard//kernel.nit:212 */
+    REGB2 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
+    /* ./../lib/standard//kernel.nit:332 */
+    if (UNTAG_Bool(REGB2)) {
+      /* ./parser//parser_prod.nit:5146 */
+      REGB2 = REGB0;
+      /* ./parser//parser_prod.nit:5147 */
+      REGB3 = TAG_Bool(ATTR_parser_nodes___ANewExpr____n_args(fra.me.REG[0])!=NIT_NULL);
+      if (UNTAG_Bool(REGB3)) {
+      } else {
+        nit_abort("Uninitialized attribute %s", "_n_args", LOCATE_parser_prod, 5147);
+      }
+      fra.me.REG[3] = ATTR_parser_nodes___ANewExpr____n_args(fra.me.REG[0]);
+      fra.me.REG[3] = CALL_abstract_collection___MapRead_____bra(fra.me.REG[3])(fra.me.REG[3], REGB2);
+      REGB3 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
+      if (UNTAG_Bool(REGB3)) {
+      } else {
+        REGB4 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+        if (UNTAG_Bool(REGB4)) {
+          REGB4 = TAG_Bool(false);
+          REGB3 = REGB4;
+        } else {
+          REGB4 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+          REGB3 = REGB4;
+        }
+      }
+      if (UNTAG_Bool(REGB3)) {
+        /* ./parser//parser_prod.nit:5148 */
+        REGB3 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+        if (UNTAG_Bool(REGB3)) {
+        } else {
+          REGB4 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+          if (UNTAG_Bool(REGB4)) {
+            REGB4 = TAG_Bool(false);
+            REGB3 = REGB4;
+          } else {
+            REGB4 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+            REGB3 = REGB4;
+          }
+        }
+        REGB3 = TAG_Bool(!UNTAG_Bool(REGB3));
+        if (UNTAG_Bool(REGB3)) {
+          /* ./parser//parser_prod.nit:5149 */
+          REGB3 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_AExpr, ID_AExpr)) /*cast AExpr*/;
+          if (UNTAG_Bool(REGB3)) {
+          } else {
+            nit_abort("Assert failed", NULL, LOCATE_parser_prod, 5149);
+          }
+          /* ./parser//parser_prod.nit:5150 */
+          REGB3 = TAG_Bool(ATTR_parser_nodes___ANewExpr____n_args(fra.me.REG[0])!=NIT_NULL);
+          if (UNTAG_Bool(REGB3)) {
+          } else {
+            nit_abort("Uninitialized attribute %s", "_n_args", LOCATE_parser_prod, 5150);
+          }
+          fra.me.REG[3] = ATTR_parser_nodes___ANewExpr____n_args(fra.me.REG[0]);
+          CALL_abstract_collection___Map_____braeq(fra.me.REG[3])(fra.me.REG[3], REGB2, fra.me.REG[2]);
+          /* ./parser//parser_prod.nit:5151 */
+          REGB3 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+          if (UNTAG_Bool(REGB3)) {
+            nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 5151);
+          }
+          CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+        } else {
+          /* ./parser//parser_prod.nit:5153 */
+          REGB3 = TAG_Bool(ATTR_parser_nodes___ANewExpr____n_args(fra.me.REG[0])!=NIT_NULL);
+          if (UNTAG_Bool(REGB3)) {
+          } else {
+            nit_abort("Uninitialized attribute %s", "_n_args", LOCATE_parser_prod, 5153);
+          }
+          fra.me.REG[3] = ATTR_parser_nodes___ANewExpr____n_args(fra.me.REG[0]);
+          CALL_abstract_collection___Map___remove_at(fra.me.REG[3])(fra.me.REG[3], REGB2);
+        }
+        /* ./parser//parser_prod.nit:5155 */
+        goto label1;
+      }
+      /* ./../lib/standard//kernel.nit:334 */
+      REGB2 = TAG_Int(1);
+      /* ./../lib/standard//kernel.nit:215 */
+      REGB2 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB2));
+      /* ./../lib/standard//kernel.nit:334 */
+      REGB0 = REGB2;
+    } else {
+      /* ./../lib/standard//kernel.nit:332 */
+      goto label2;
+    }
+  }
+  label2: while(0);
+  label1: while(0);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser_prod___ANewExpr___visit_all(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 5160;
+  fra.me.meth = LOCATE_parser_prod___ANewExpr___visit_all;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:5162 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ANewExpr____n_kwnew(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_kwnew", LOCATE_parser_prod, 5162);
+  }
+  fra.me.REG[2] = ATTR_parser_nodes___ANewExpr____n_kwnew(fra.me.REG[0]);
+  CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser_prod.nit:5163 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ANewExpr____n_type(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_type", LOCATE_parser_prod, 5163);
+  }
+  fra.me.REG[2] = ATTR_parser_nodes___ANewExpr____n_type(fra.me.REG[0]);
+  CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser_prod.nit:5164 */
+  fra.me.REG[2] = ATTR_parser_nodes___ANewExpr____n_id(fra.me.REG[0]);
+  REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:5165 */
+    fra.me.REG[2] = ATTR_parser_nodes___ANewExpr____n_id(fra.me.REG[0]);
+    REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_TId, ID_TId)) /*cast TId*/;
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      nit_abort("Cast failed", NULL, LOCATE_parser_prod, 5165);
+    }
+    CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  }
+  /* ./parser//parser_prod.nit:5167 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ANewExpr____n_args(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_args", LOCATE_parser_prod, 5167);
+  }
+  fra.me.REG[0] = ATTR_parser_nodes___ANewExpr____n_args(fra.me.REG[0]);
+  CALL_abstract_collection___Collection___iterate(fra.me.REG[0])(fra.me.REG[0], (&(fra.me)), ((fun_t)OC_parser_prod___ANewExpr___visit_all_1));
+  stack_frame_head = fra.me.prev;
+  return;
+}
+  void OC_parser_prod___ANewExpr___visit_all_1(struct stack_frame_t *closctx, val_t p0, struct stack_frame_t *closctx_param, fun_t clos_fun0){
+    struct {struct stack_frame_t me;} fra;
+    fun_t CREG[1];
+    val_t tmp;
+    fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+    fra.me.file = LOCATE_parser_prod;
+    fra.me.line = 0;
+    fra.me.meth = LOCATE_parser_prod___ANewExpr___visit_all;
+    fra.me.has_broke = 0;
+    fra.me.REG_size = 1;
+    fra.me.REG[0] = NIT_NULL;
+    fra.me.closure_ctx = closctx_param;
+    fra.me.closure_funs = CREG;
+    fra.me.REG[0] = p0;
+    CREG[0] = clos_fun0;
+    /* ./parser//parser_prod.nit:5168 */
+    CALL_parser_prod___Visitor___enter_visit(closctx->REG[1])(closctx->REG[1], fra.me.REG[0]);
+    stack_frame_head = fra.me.prev;
+    return;
+  }
+void parser_prod___AAttrExpr___empty_init(val_t p0, int* init_table){
+  int itpos179 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_AAttrExpr].i;
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  if (init_table[itpos179]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 5173;
+  fra.me.meth = LOCATE_parser_prod___AAttrExpr___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos179] = 1;
+  return;
+}
+void parser_prod___AAttrExpr___init_aattrexpr(val_t p0, val_t p1, val_t p2, int* init_table){
+  int itpos180 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_AAttrExpr].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos180]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 5175;
+  fra.me.meth = LOCATE_parser_prod___AAttrExpr___init_aattrexpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  /* ./parser//parser_prod.nit:5180 */
+  CALL_parser_prod___AAttrExpr___empty_init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  /* ./parser//parser_prod.nit:5181 */
+  REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Cast failed", NULL, LOCATE_parser_prod, 5181);
+  }
+  ATTR_parser_nodes___AAttrFormExpr____n_expr(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./parser//parser_prod.nit:5182 */
+  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+    nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 5182);
+  }
+  CALL_parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  /* ./parser//parser_prod.nit:5183 */
+  REGB0 = TAG_Bool(fra.me.REG[2]!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Cast failed", NULL, LOCATE_parser_prod, 5183);
+  }
+  ATTR_parser_nodes___AAttrFormExpr____n_id(fra.me.REG[0]) = fra.me.REG[2];
+  /* ./parser//parser_prod.nit:5184 */
+  REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+    nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 5184);
+  }
+  CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  init_table[itpos180] = 1;
+  return;
+}
+void parser_prod___AAttrExpr___replace_child(val_t p0, val_t p1, val_t p2){
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 5187;
+  fra.me.meth = LOCATE_parser_prod___AAttrExpr___replace_child;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  /* ./parser//parser_prod.nit:5189 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AAttrFormExpr____n_expr(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser_prod, 5189);
+  }
+  fra.me.REG[3] = ATTR_parser_nodes___AAttrFormExpr____n_expr(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+    REGB0 = REGB1;
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:5190 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:5191 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 5191);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:5192 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_AExpr, ID_AExpr)) /*cast AExpr*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 5192);
+      }
+      /* ./parser//parser_prod.nit:5193 */
+      ATTR_parser_nodes___AAttrFormExpr____n_expr(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:5195 */
+      nit_abort("Aborted", NULL, LOCATE_parser_prod, 5195);
+    }
+    /* ./parser//parser_prod.nit:5197 */
+    goto label1;
+  }
+  /* ./parser//parser_prod.nit:5199 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AAttrFormExpr____n_id(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_id", LOCATE_parser_prod, 5199);
+  }
+  fra.me.REG[3] = ATTR_parser_nodes___AAttrFormExpr____n_id(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+    REGB0 = REGB1;
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:5200 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:5201 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 5201);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:5202 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_TAttrid, ID_TAttrid)) /*cast TAttrid*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 5202);
+      }
+      /* ./parser//parser_prod.nit:5203 */
+      ATTR_parser_nodes___AAttrFormExpr____n_id(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:5205 */
+      nit_abort("Aborted", NULL, LOCATE_parser_prod, 5205);
+    }
+    /* ./parser//parser_prod.nit:5207 */
+    goto label1;
+  }
+  label1: while(0);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser_prod___AAttrExpr___visit_all(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 5211;
+  fra.me.meth = LOCATE_parser_prod___AAttrExpr___visit_all;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:5213 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AAttrFormExpr____n_expr(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser_prod, 5213);
+  }
+  fra.me.REG[2] = ATTR_parser_nodes___AAttrFormExpr____n_expr(fra.me.REG[0]);
+  CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser_prod.nit:5214 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AAttrFormExpr____n_id(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_id", LOCATE_parser_prod, 5214);
+  }
+  fra.me.REG[0] = ATTR_parser_nodes___AAttrFormExpr____n_id(fra.me.REG[0]);
+  CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser_prod___AAttrAssignExpr___empty_init(val_t p0, int* init_table){
+  int itpos181 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_AAttrAssignExpr].i;
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  if (init_table[itpos181]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 5218;
+  fra.me.meth = LOCATE_parser_prod___AAttrAssignExpr___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos181] = 1;
+  return;
+}
+void parser_prod___AAttrAssignExpr___init_aattrassignexpr(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4, int* init_table){
+  int itpos182 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_AAttrAssignExpr].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos182]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 5220;
+  fra.me.meth = LOCATE_parser_prod___AAttrAssignExpr___init_aattrassignexpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  fra.me.REG[3] = p3;
+  fra.me.REG[4] = p4;
+  /* ./parser//parser_prod.nit:5227 */
+  CALL_parser_prod___AAttrAssignExpr___empty_init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  /* ./parser//parser_prod.nit:5228 */
+  REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Cast failed", NULL, LOCATE_parser_prod, 5228);
+  }
+  ATTR_parser_nodes___AAttrFormExpr____n_expr(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./parser//parser_prod.nit:5229 */
+  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+    nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 5229);
+  }
+  CALL_parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  /* ./parser//parser_prod.nit:5230 */
+  REGB0 = TAG_Bool(fra.me.REG[2]!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Cast failed", NULL, LOCATE_parser_prod, 5230);
+  }
+  ATTR_parser_nodes___AAttrFormExpr____n_id(fra.me.REG[0]) = fra.me.REG[2];
+  /* ./parser//parser_prod.nit:5231 */
+  REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+    nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 5231);
+  }
+  CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+  /* ./parser//parser_prod.nit:5232 */
+  REGB0 = TAG_Bool(fra.me.REG[3]!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Cast failed", NULL, LOCATE_parser_prod, 5232);
+  }
+  ATTR_parser_nodes___AAssignFormExpr____n_assign(fra.me.REG[0]) = fra.me.REG[3];
+  /* ./parser//parser_prod.nit:5233 */
+  REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+    nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 5233);
+  }
+  CALL_parser_prod___ANode___parent__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[0]);
+  /* ./parser//parser_prod.nit:5234 */
+  REGB0 = TAG_Bool(fra.me.REG[4]!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Cast failed", NULL, LOCATE_parser_prod, 5234);
+  }
+  ATTR_parser_nodes___AAssignFormExpr____n_value(fra.me.REG[0]) = fra.me.REG[4];
+  /* ./parser//parser_prod.nit:5235 */
+  REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+    nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 5235);
+  }
+  CALL_parser_prod___ANode___parent__eq(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  init_table[itpos182] = 1;
+  return;
+}
+void parser_prod___AAttrAssignExpr___replace_child(val_t p0, val_t p1, val_t p2){
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 5238;
+  fra.me.meth = LOCATE_parser_prod___AAttrAssignExpr___replace_child;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  /* ./parser//parser_prod.nit:5240 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AAttrFormExpr____n_expr(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser_prod, 5240);
+  }
+  fra.me.REG[3] = ATTR_parser_nodes___AAttrFormExpr____n_expr(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+    REGB0 = REGB1;
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:5241 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:5242 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 5242);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:5243 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_AExpr, ID_AExpr)) /*cast AExpr*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 5243);
+      }
+      /* ./parser//parser_prod.nit:5244 */
+      ATTR_parser_nodes___AAttrFormExpr____n_expr(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:5246 */
+      nit_abort("Aborted", NULL, LOCATE_parser_prod, 5246);
+    }
+    /* ./parser//parser_prod.nit:5248 */
+    goto label1;
+  }
+  /* ./parser//parser_prod.nit:5250 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AAttrFormExpr____n_id(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_id", LOCATE_parser_prod, 5250);
+  }
+  fra.me.REG[3] = ATTR_parser_nodes___AAttrFormExpr____n_id(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+    REGB0 = REGB1;
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:5251 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:5252 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 5252);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:5253 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_TAttrid, ID_TAttrid)) /*cast TAttrid*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 5253);
+      }
+      /* ./parser//parser_prod.nit:5254 */
+      ATTR_parser_nodes___AAttrFormExpr____n_id(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:5256 */
+      nit_abort("Aborted", NULL, LOCATE_parser_prod, 5256);
+    }
+    /* ./parser//parser_prod.nit:5258 */
+    goto label1;
+  }
+  /* ./parser//parser_prod.nit:5260 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AAssignFormExpr____n_assign(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_assign", LOCATE_parser_prod, 5260);
+  }
+  fra.me.REG[3] = ATTR_parser_nodes___AAssignFormExpr____n_assign(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+    REGB0 = REGB1;
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:5261 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:5262 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 5262);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:5263 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_TAssign, ID_TAssign)) /*cast TAssign*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 5263);
+      }
+      /* ./parser//parser_prod.nit:5264 */
+      ATTR_parser_nodes___AAssignFormExpr____n_assign(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:5266 */
+      nit_abort("Aborted", NULL, LOCATE_parser_prod, 5266);
+    }
+    /* ./parser//parser_prod.nit:5268 */
+    goto label1;
+  }
+  /* ./parser//parser_prod.nit:5270 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AAssignFormExpr____n_value(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_value", LOCATE_parser_prod, 5270);
+  }
+  fra.me.REG[3] = ATTR_parser_nodes___AAssignFormExpr____n_value(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+    REGB0 = REGB1;
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:5271 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:5272 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 5272);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:5273 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_AExpr, ID_AExpr)) /*cast AExpr*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 5273);
+      }
+      /* ./parser//parser_prod.nit:5274 */
+      ATTR_parser_nodes___AAssignFormExpr____n_value(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:5276 */
+      nit_abort("Aborted", NULL, LOCATE_parser_prod, 5276);
+    }
+    /* ./parser//parser_prod.nit:5278 */
+    goto label1;
+  }
+  label1: while(0);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser_prod___AAttrAssignExpr___visit_all(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 5282;
+  fra.me.meth = LOCATE_parser_prod___AAttrAssignExpr___visit_all;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:5284 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AAttrFormExpr____n_expr(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser_prod, 5284);
+  }
+  fra.me.REG[2] = ATTR_parser_nodes___AAttrFormExpr____n_expr(fra.me.REG[0]);
+  CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser_prod.nit:5285 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AAttrFormExpr____n_id(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_id", LOCATE_parser_prod, 5285);
+  }
+  fra.me.REG[2] = ATTR_parser_nodes___AAttrFormExpr____n_id(fra.me.REG[0]);
+  CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser_prod.nit:5286 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AAssignFormExpr____n_assign(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_assign", LOCATE_parser_prod, 5286);
+  }
+  fra.me.REG[2] = ATTR_parser_nodes___AAssignFormExpr____n_assign(fra.me.REG[0]);
+  CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser_prod.nit:5287 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AAssignFormExpr____n_value(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_value", LOCATE_parser_prod, 5287);
+  }
+  fra.me.REG[0] = ATTR_parser_nodes___AAssignFormExpr____n_value(fra.me.REG[0]);
+  CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser_prod___AAttrReassignExpr___empty_init(val_t p0, int* init_table){
+  int itpos183 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_AAttrReassignExpr].i;
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  if (init_table[itpos183]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 5291;
+  fra.me.meth = LOCATE_parser_prod___AAttrReassignExpr___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos183] = 1;
+  return;
+}
+void parser_prod___AAttrReassignExpr___init_aattrreassignexpr(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4, int* init_table){
+  int itpos184 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_AAttrReassignExpr].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos184]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 5293;
+  fra.me.meth = LOCATE_parser_prod___AAttrReassignExpr___init_aattrreassignexpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  fra.me.REG[3] = p3;
+  fra.me.REG[4] = p4;
+  /* ./parser//parser_prod.nit:5300 */
+  CALL_parser_prod___AAttrReassignExpr___empty_init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  /* ./parser//parser_prod.nit:5301 */
+  REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Cast failed", NULL, LOCATE_parser_prod, 5301);
+  }
+  ATTR_parser_nodes___AAttrFormExpr____n_expr(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./parser//parser_prod.nit:5302 */
+  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+    nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 5302);
+  }
+  CALL_parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  /* ./parser//parser_prod.nit:5303 */
+  REGB0 = TAG_Bool(fra.me.REG[2]!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Cast failed", NULL, LOCATE_parser_prod, 5303);
+  }
+  ATTR_parser_nodes___AAttrFormExpr____n_id(fra.me.REG[0]) = fra.me.REG[2];
+  /* ./parser//parser_prod.nit:5304 */
+  REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+    nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 5304);
+  }
+  CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+  /* ./parser//parser_prod.nit:5305 */
+  REGB0 = TAG_Bool(fra.me.REG[3]!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Cast failed", NULL, LOCATE_parser_prod, 5305);
+  }
+  ATTR_parser_nodes___AReassignFormExpr____n_assign_op(fra.me.REG[0]) = fra.me.REG[3];
+  /* ./parser//parser_prod.nit:5306 */
+  REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+    nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 5306);
+  }
+  CALL_parser_prod___ANode___parent__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[0]);
+  /* ./parser//parser_prod.nit:5307 */
+  REGB0 = TAG_Bool(fra.me.REG[4]!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Cast failed", NULL, LOCATE_parser_prod, 5307);
+  }
+  ATTR_parser_nodes___AReassignFormExpr____n_value(fra.me.REG[0]) = fra.me.REG[4];
+  /* ./parser//parser_prod.nit:5308 */
+  REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+    nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 5308);
+  }
+  CALL_parser_prod___ANode___parent__eq(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  init_table[itpos184] = 1;
+  return;
+}
+void parser_prod___AAttrReassignExpr___replace_child(val_t p0, val_t p1, val_t p2){
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 5311;
+  fra.me.meth = LOCATE_parser_prod___AAttrReassignExpr___replace_child;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  /* ./parser//parser_prod.nit:5313 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AAttrFormExpr____n_expr(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser_prod, 5313);
+  }
+  fra.me.REG[3] = ATTR_parser_nodes___AAttrFormExpr____n_expr(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+    REGB0 = REGB1;
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:5314 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:5315 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 5315);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:5316 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_AExpr, ID_AExpr)) /*cast AExpr*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 5316);
+      }
+      /* ./parser//parser_prod.nit:5317 */
+      ATTR_parser_nodes___AAttrFormExpr____n_expr(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:5319 */
+      nit_abort("Aborted", NULL, LOCATE_parser_prod, 5319);
+    }
+    /* ./parser//parser_prod.nit:5321 */
+    goto label1;
+  }
+  /* ./parser//parser_prod.nit:5323 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AAttrFormExpr____n_id(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_id", LOCATE_parser_prod, 5323);
+  }
+  fra.me.REG[3] = ATTR_parser_nodes___AAttrFormExpr____n_id(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+    REGB0 = REGB1;
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:5324 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:5325 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 5325);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:5326 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_TAttrid, ID_TAttrid)) /*cast TAttrid*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 5326);
+      }
+      /* ./parser//parser_prod.nit:5327 */
+      ATTR_parser_nodes___AAttrFormExpr____n_id(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:5329 */
+      nit_abort("Aborted", NULL, LOCATE_parser_prod, 5329);
+    }
+    /* ./parser//parser_prod.nit:5331 */
+    goto label1;
+  }
+  /* ./parser//parser_prod.nit:5333 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AReassignFormExpr____n_assign_op(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_assign_op", LOCATE_parser_prod, 5333);
+  }
+  fra.me.REG[3] = ATTR_parser_nodes___AReassignFormExpr____n_assign_op(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+    REGB0 = REGB1;
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:5334 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:5335 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 5335);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:5336 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_AAssignOp, ID_AAssignOp)) /*cast AAssignOp*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 5336);
+      }
+      /* ./parser//parser_prod.nit:5337 */
+      ATTR_parser_nodes___AReassignFormExpr____n_assign_op(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:5339 */
+      nit_abort("Aborted", NULL, LOCATE_parser_prod, 5339);
+    }
+    /* ./parser//parser_prod.nit:5341 */
+    goto label1;
+  }
+  /* ./parser//parser_prod.nit:5343 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AReassignFormExpr____n_value(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_value", LOCATE_parser_prod, 5343);
+  }
+  fra.me.REG[3] = ATTR_parser_nodes___AReassignFormExpr____n_value(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+    REGB0 = REGB1;
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:5344 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:5345 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 5345);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:5346 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_AExpr, ID_AExpr)) /*cast AExpr*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 5346);
+      }
+      /* ./parser//parser_prod.nit:5347 */
+      ATTR_parser_nodes___AReassignFormExpr____n_value(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:5349 */
+      nit_abort("Aborted", NULL, LOCATE_parser_prod, 5349);
+    }
+    /* ./parser//parser_prod.nit:5351 */
+    goto label1;
+  }
+  label1: while(0);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser_prod___AAttrReassignExpr___visit_all(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 5355;
+  fra.me.meth = LOCATE_parser_prod___AAttrReassignExpr___visit_all;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:5357 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AAttrFormExpr____n_expr(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser_prod, 5357);
+  }
+  fra.me.REG[2] = ATTR_parser_nodes___AAttrFormExpr____n_expr(fra.me.REG[0]);
+  CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser_prod.nit:5358 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AAttrFormExpr____n_id(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_id", LOCATE_parser_prod, 5358);
+  }
+  fra.me.REG[2] = ATTR_parser_nodes___AAttrFormExpr____n_id(fra.me.REG[0]);
+  CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser_prod.nit:5359 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AReassignFormExpr____n_assign_op(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_assign_op", LOCATE_parser_prod, 5359);
+  }
+  fra.me.REG[2] = ATTR_parser_nodes___AReassignFormExpr____n_assign_op(fra.me.REG[0]);
+  CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser_prod.nit:5360 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AReassignFormExpr____n_value(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_value", LOCATE_parser_prod, 5360);
+  }
+  fra.me.REG[0] = ATTR_parser_nodes___AReassignFormExpr____n_value(fra.me.REG[0]);
+  CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser_prod___ACallExpr___empty_init(val_t p0, int* init_table){
+  int itpos185 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ACallExpr].i;
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  if (init_table[itpos185]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 5364;
+  fra.me.meth = LOCATE_parser_prod___ACallExpr___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos185] = 1;
+  return;
+}
+void parser_prod___ACallExpr___init_acallexpr(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4, int* init_table){
+  int itpos186 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ACallExpr].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos186]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 5366;
+  fra.me.meth = LOCATE_parser_prod___ACallExpr___init_acallexpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  fra.me.REG[3] = p3;
+  fra.me.REG[4] = p4;
+  /* ./parser//parser_prod.nit:5373 */
+  CALL_parser_prod___ACallExpr___empty_init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  /* ./parser//parser_prod.nit:5374 */
+  REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Cast failed", NULL, LOCATE_parser_prod, 5374);
+  }
+  ATTR_parser_nodes___ASendExpr____n_expr(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./parser//parser_prod.nit:5375 */
+  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+    nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 5375);
+  }
+  CALL_parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  /* ./parser//parser_prod.nit:5376 */
+  REGB0 = TAG_Bool(fra.me.REG[2]!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Cast failed", NULL, LOCATE_parser_prod, 5376);
+  }
+  ATTR_parser_nodes___ACallFormExpr____n_id(fra.me.REG[0]) = fra.me.REG[2];
+  /* ./parser//parser_prod.nit:5377 */
+  REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+    nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 5377);
+  }
+  CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+  CALL_abstract_collection___Collection___iterate(fra.me.REG[3])(fra.me.REG[3], (&(fra.me)), ((fun_t)OC_parser_prod___ACallExpr___init_acallexpr_1));
+  CALL_abstract_collection___Collection___iterate(fra.me.REG[4])(fra.me.REG[4], (&(fra.me)), ((fun_t)OC_parser_prod___ACallExpr___init_acallexpr_2));
+  stack_frame_head = fra.me.prev;
+  init_table[itpos186] = 1;
+  return;
+}
+  void OC_parser_prod___ACallExpr___init_acallexpr_1(struct stack_frame_t *closctx, val_t p0, struct stack_frame_t *closctx_param, fun_t clos_fun0){
+    struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+    val_t REGB0;
+    fun_t CREG[1];
+    val_t tmp;
+    /* ./parser//parser_prod.nit:5378 */
+    fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+    fra.me.file = LOCATE_parser_prod;
+    fra.me.line = 0;
+    fra.me.meth = LOCATE_parser_prod___ACallExpr___init_acallexpr;
+    fra.me.has_broke = 0;
+    fra.me.REG_size = 2;
+    fra.me.REG[0] = NIT_NULL;
+    fra.me.REG[1] = NIT_NULL;
+    fra.me.closure_ctx = closctx_param;
+    fra.me.closure_funs = CREG;
+    fra.me.REG[0] = p0;
+    CREG[0] = clos_fun0;
+    /* ./parser//parser_prod.nit:5379 */
+    REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[0], COLOR_AExpr, ID_AExpr)) /*cast AExpr*/;
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      nit_abort("Assert failed", NULL, LOCATE_parser_prod, 5379);
+    }
+    /* ./parser//parser_prod.nit:5380 */
+    REGB0 = TAG_Bool(ATTR_parser_nodes___ACallFormExpr____n_args(closctx->REG[0])!=NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      nit_abort("Uninitialized attribute %s", "_n_args", LOCATE_parser_prod, 5380);
+    }
+    fra.me.REG[1] = ATTR_parser_nodes___ACallFormExpr____n_args(closctx->REG[0]);
+    CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+    /* ./parser//parser_prod.nit:5381 */
+    CALL_parser_prod___ANode___parent__eq(fra.me.REG[0])(fra.me.REG[0], closctx->REG[0]);
+    stack_frame_head = fra.me.prev;
+    return;
+  }
+  void OC_parser_prod___ACallExpr___init_acallexpr_2(struct stack_frame_t *closctx, val_t p0, struct stack_frame_t *closctx_param, fun_t clos_fun0){
+    struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+    val_t REGB0;
+    fun_t CREG[1];
+    val_t tmp;
+    /* ./parser//parser_prod.nit:5383 */
+    fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+    fra.me.file = LOCATE_parser_prod;
+    fra.me.line = 0;
+    fra.me.meth = LOCATE_parser_prod___ACallExpr___init_acallexpr;
+    fra.me.has_broke = 0;
+    fra.me.REG_size = 2;
+    fra.me.REG[0] = NIT_NULL;
+    fra.me.REG[1] = NIT_NULL;
+    fra.me.closure_ctx = closctx_param;
+    fra.me.closure_funs = CREG;
+    fra.me.REG[0] = p0;
+    CREG[0] = clos_fun0;
+    /* ./parser//parser_prod.nit:5384 */
+    REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[0], COLOR_AClosureDef, ID_AClosureDef)) /*cast AClosureDef*/;
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      nit_abort("Assert failed", NULL, LOCATE_parser_prod, 5384);
+    }
+    /* ./parser//parser_prod.nit:5385 */
+    REGB0 = TAG_Bool(ATTR_parser_nodes___ASendExpr____n_closure_defs(closctx->REG[0])!=NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      nit_abort("Uninitialized attribute %s", "_n_closure_defs", LOCATE_parser_prod, 5385);
+    }
+    fra.me.REG[1] = ATTR_parser_nodes___ASendExpr____n_closure_defs(closctx->REG[0]);
+    CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+    /* ./parser//parser_prod.nit:5386 */
+    CALL_parser_prod___ANode___parent__eq(fra.me.REG[0])(fra.me.REG[0], closctx->REG[0]);
+    stack_frame_head = fra.me.prev;
+    return;
+  }
+void parser_prod___ACallExpr___replace_child(val_t p0, val_t p1, val_t p2){
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t REGB2;
+  val_t REGB3;
+  val_t REGB4;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 5390;
+  fra.me.meth = LOCATE_parser_prod___ACallExpr___replace_child;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  /* ./parser//parser_prod.nit:5392 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ASendExpr____n_expr(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser_prod, 5392);
+  }
+  fra.me.REG[3] = ATTR_parser_nodes___ASendExpr____n_expr(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+    REGB0 = REGB1;
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:5393 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:5394 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 5394);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:5395 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_AExpr, ID_AExpr)) /*cast AExpr*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 5395);
+      }
+      /* ./parser//parser_prod.nit:5396 */
+      ATTR_parser_nodes___ASendExpr____n_expr(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:5398 */
+      nit_abort("Aborted", NULL, LOCATE_parser_prod, 5398);
+    }
+    /* ./parser//parser_prod.nit:5400 */
+    goto label1;
+  }
+  /* ./parser//parser_prod.nit:5402 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ACallFormExpr____n_id(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_id", LOCATE_parser_prod, 5402);
+  }
+  fra.me.REG[3] = ATTR_parser_nodes___ACallFormExpr____n_id(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+    REGB0 = REGB1;
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:5403 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:5404 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 5404);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:5405 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_TId, ID_TId)) /*cast TId*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 5405);
+      }
+      /* ./parser//parser_prod.nit:5406 */
+      ATTR_parser_nodes___ACallFormExpr____n_id(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:5408 */
+      nit_abort("Aborted", NULL, LOCATE_parser_prod, 5408);
+    }
+    /* ./parser//parser_prod.nit:5410 */
+    goto label1;
+  }
+  /* ./parser//parser_prod.nit:5412 */
+  REGB0 = TAG_Int(0);
+  REGB1 = TAG_Bool(ATTR_parser_nodes___ACallFormExpr____n_args(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB1)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_args", LOCATE_parser_prod, 5412);
+  }
+  fra.me.REG[3] = ATTR_parser_nodes___ACallFormExpr____n_args(fra.me.REG[0]);
+  REGB1 = CALL_abstract_collection___Collection___length(fra.me.REG[3])(fra.me.REG[3]);
+  /* ./../lib/standard//kernel.nit:332 */
+  while(1) {
+    /* ./../lib/standard//kernel.nit:212 */
+    REGB2 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
+    /* ./../lib/standard//kernel.nit:332 */
+    if (UNTAG_Bool(REGB2)) {
+      /* ./parser//parser_prod.nit:5412 */
+      REGB2 = REGB0;
+      /* ./parser//parser_prod.nit:5413 */
+      REGB3 = TAG_Bool(ATTR_parser_nodes___ACallFormExpr____n_args(fra.me.REG[0])!=NIT_NULL);
+      if (UNTAG_Bool(REGB3)) {
+      } else {
+        nit_abort("Uninitialized attribute %s", "_n_args", LOCATE_parser_prod, 5413);
+      }
+      fra.me.REG[3] = ATTR_parser_nodes___ACallFormExpr____n_args(fra.me.REG[0]);
+      fra.me.REG[3] = CALL_abstract_collection___MapRead_____bra(fra.me.REG[3])(fra.me.REG[3], REGB2);
+      REGB3 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
+      if (UNTAG_Bool(REGB3)) {
+      } else {
+        REGB4 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+        if (UNTAG_Bool(REGB4)) {
+          REGB4 = TAG_Bool(false);
+          REGB3 = REGB4;
+        } else {
+          REGB4 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+          REGB3 = REGB4;
+        }
+      }
+      if (UNTAG_Bool(REGB3)) {
+        /* ./parser//parser_prod.nit:5414 */
+        REGB3 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+        if (UNTAG_Bool(REGB3)) {
+        } else {
+          REGB4 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+          if (UNTAG_Bool(REGB4)) {
+            REGB4 = TAG_Bool(false);
+            REGB3 = REGB4;
+          } else {
+            REGB4 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+            REGB3 = REGB4;
+          }
+        }
+        REGB3 = TAG_Bool(!UNTAG_Bool(REGB3));
+        if (UNTAG_Bool(REGB3)) {
+          /* ./parser//parser_prod.nit:5415 */
+          REGB3 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_AExpr, ID_AExpr)) /*cast AExpr*/;
+          if (UNTAG_Bool(REGB3)) {
+          } else {
+            nit_abort("Assert failed", NULL, LOCATE_parser_prod, 5415);
+          }
+          /* ./parser//parser_prod.nit:5416 */
+          REGB3 = TAG_Bool(ATTR_parser_nodes___ACallFormExpr____n_args(fra.me.REG[0])!=NIT_NULL);
+          if (UNTAG_Bool(REGB3)) {
+          } else {
+            nit_abort("Uninitialized attribute %s", "_n_args", LOCATE_parser_prod, 5416);
+          }
+          fra.me.REG[3] = ATTR_parser_nodes___ACallFormExpr____n_args(fra.me.REG[0]);
+          CALL_abstract_collection___Map_____braeq(fra.me.REG[3])(fra.me.REG[3], REGB2, fra.me.REG[2]);
+          /* ./parser//parser_prod.nit:5417 */
+          REGB3 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+          if (UNTAG_Bool(REGB3)) {
+            nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 5417);
+          }
+          CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+        } else {
+          /* ./parser//parser_prod.nit:5419 */
+          REGB3 = TAG_Bool(ATTR_parser_nodes___ACallFormExpr____n_args(fra.me.REG[0])!=NIT_NULL);
+          if (UNTAG_Bool(REGB3)) {
+          } else {
+            nit_abort("Uninitialized attribute %s", "_n_args", LOCATE_parser_prod, 5419);
+          }
+          fra.me.REG[3] = ATTR_parser_nodes___ACallFormExpr____n_args(fra.me.REG[0]);
+          CALL_abstract_collection___Map___remove_at(fra.me.REG[3])(fra.me.REG[3], REGB2);
+        }
+        /* ./parser//parser_prod.nit:5421 */
+        goto label1;
+      }
+      /* ./../lib/standard//kernel.nit:334 */
+      REGB2 = TAG_Int(1);
+      /* ./../lib/standard//kernel.nit:215 */
+      REGB2 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB2));
+      /* ./../lib/standard//kernel.nit:334 */
+      REGB0 = REGB2;
+    } else {
+      /* ./../lib/standard//kernel.nit:332 */
+      goto label2;
+    }
+  }
+  label2: while(0);
+  /* ./parser//parser_prod.nit:5424 */
+  REGB0 = TAG_Int(0);
+  REGB1 = TAG_Bool(ATTR_parser_nodes___ASendExpr____n_closure_defs(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB1)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_closure_defs", LOCATE_parser_prod, 5424);
+  }
+  fra.me.REG[3] = ATTR_parser_nodes___ASendExpr____n_closure_defs(fra.me.REG[0]);
+  REGB1 = CALL_abstract_collection___Collection___length(fra.me.REG[3])(fra.me.REG[3]);
+  /* ./../lib/standard//kernel.nit:332 */
+  while(1) {
+    /* ./../lib/standard//kernel.nit:212 */
+    REGB2 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
+    /* ./../lib/standard//kernel.nit:332 */
+    if (UNTAG_Bool(REGB2)) {
+      /* ./parser//parser_prod.nit:5424 */
+      REGB2 = REGB0;
+      /* ./parser//parser_prod.nit:5425 */
+      REGB3 = TAG_Bool(ATTR_parser_nodes___ASendExpr____n_closure_defs(fra.me.REG[0])!=NIT_NULL);
+      if (UNTAG_Bool(REGB3)) {
+      } else {
+        nit_abort("Uninitialized attribute %s", "_n_closure_defs", LOCATE_parser_prod, 5425);
+      }
+      fra.me.REG[3] = ATTR_parser_nodes___ASendExpr____n_closure_defs(fra.me.REG[0]);
+      fra.me.REG[3] = CALL_abstract_collection___MapRead_____bra(fra.me.REG[3])(fra.me.REG[3], REGB2);
+      REGB3 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
+      if (UNTAG_Bool(REGB3)) {
+      } else {
+        REGB4 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+        if (UNTAG_Bool(REGB4)) {
+          REGB4 = TAG_Bool(false);
+          REGB3 = REGB4;
+        } else {
+          REGB4 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+          REGB3 = REGB4;
+        }
+      }
+      if (UNTAG_Bool(REGB3)) {
+        /* ./parser//parser_prod.nit:5426 */
+        REGB3 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+        if (UNTAG_Bool(REGB3)) {
+        } else {
+          REGB4 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+          if (UNTAG_Bool(REGB4)) {
+            REGB4 = TAG_Bool(false);
+            REGB3 = REGB4;
+          } else {
+            REGB4 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+            REGB3 = REGB4;
+          }
+        }
+        REGB3 = TAG_Bool(!UNTAG_Bool(REGB3));
+        if (UNTAG_Bool(REGB3)) {
+          /* ./parser//parser_prod.nit:5427 */
+          REGB3 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_AClosureDef, ID_AClosureDef)) /*cast AClosureDef*/;
+          if (UNTAG_Bool(REGB3)) {
+          } else {
+            nit_abort("Assert failed", NULL, LOCATE_parser_prod, 5427);
+          }
+          /* ./parser//parser_prod.nit:5428 */
+          REGB3 = TAG_Bool(ATTR_parser_nodes___ASendExpr____n_closure_defs(fra.me.REG[0])!=NIT_NULL);
+          if (UNTAG_Bool(REGB3)) {
+          } else {
+            nit_abort("Uninitialized attribute %s", "_n_closure_defs", LOCATE_parser_prod, 5428);
+          }
+          fra.me.REG[3] = ATTR_parser_nodes___ASendExpr____n_closure_defs(fra.me.REG[0]);
+          CALL_abstract_collection___Map_____braeq(fra.me.REG[3])(fra.me.REG[3], REGB2, fra.me.REG[2]);
+          /* ./parser//parser_prod.nit:5429 */
+          REGB3 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+          if (UNTAG_Bool(REGB3)) {
+            nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 5429);
+          }
+          CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+        } else {
+          /* ./parser//parser_prod.nit:5431 */
+          REGB3 = TAG_Bool(ATTR_parser_nodes___ASendExpr____n_closure_defs(fra.me.REG[0])!=NIT_NULL);
+          if (UNTAG_Bool(REGB3)) {
+          } else {
+            nit_abort("Uninitialized attribute %s", "_n_closure_defs", LOCATE_parser_prod, 5431);
+          }
+          fra.me.REG[3] = ATTR_parser_nodes___ASendExpr____n_closure_defs(fra.me.REG[0]);
+          CALL_abstract_collection___Map___remove_at(fra.me.REG[3])(fra.me.REG[3], REGB2);
+        }
+        /* ./parser//parser_prod.nit:5433 */
+        goto label1;
+      }
+      /* ./../lib/standard//kernel.nit:334 */
+      REGB2 = TAG_Int(1);
+      /* ./../lib/standard//kernel.nit:215 */
+      REGB2 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB2));
+      /* ./../lib/standard//kernel.nit:334 */
+      REGB0 = REGB2;
+    } else {
+      /* ./../lib/standard//kernel.nit:332 */
+      goto label3;
+    }
+  }
+  label3: while(0);
+  label1: while(0);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser_prod___ACallExpr___visit_all(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 5438;
+  fra.me.meth = LOCATE_parser_prod___ACallExpr___visit_all;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:5440 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ASendExpr____n_expr(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser_prod, 5440);
+  }
+  fra.me.REG[2] = ATTR_parser_nodes___ASendExpr____n_expr(fra.me.REG[0]);
+  CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser_prod.nit:5441 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ACallFormExpr____n_id(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_id", LOCATE_parser_prod, 5441);
+  }
+  fra.me.REG[2] = ATTR_parser_nodes___ACallFormExpr____n_id(fra.me.REG[0]);
+  CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser_prod.nit:5442 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ACallFormExpr____n_args(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_args", LOCATE_parser_prod, 5442);
+  }
+  fra.me.REG[2] = ATTR_parser_nodes___ACallFormExpr____n_args(fra.me.REG[0]);
+  CALL_abstract_collection___Collection___iterate(fra.me.REG[2])(fra.me.REG[2], (&(fra.me)), ((fun_t)OC_parser_prod___ACallExpr___visit_all_1));
+  /* ./parser//parser_prod.nit:5445 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ASendExpr____n_closure_defs(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_closure_defs", LOCATE_parser_prod, 5445);
+  }
+  fra.me.REG[0] = ATTR_parser_nodes___ASendExpr____n_closure_defs(fra.me.REG[0]);
+  CALL_abstract_collection___Collection___iterate(fra.me.REG[0])(fra.me.REG[0], (&(fra.me)), ((fun_t)OC_parser_prod___ACallExpr___visit_all_2));
+  stack_frame_head = fra.me.prev;
+  return;
+}
+  void OC_parser_prod___ACallExpr___visit_all_1(struct stack_frame_t *closctx, val_t p0, struct stack_frame_t *closctx_param, fun_t clos_fun0){
+    struct {struct stack_frame_t me;} fra;
+    fun_t CREG[1];
+    val_t tmp;
+    fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+    fra.me.file = LOCATE_parser_prod;
+    fra.me.line = 0;
+    fra.me.meth = LOCATE_parser_prod___ACallExpr___visit_all;
+    fra.me.has_broke = 0;
+    fra.me.REG_size = 1;
+    fra.me.REG[0] = NIT_NULL;
+    fra.me.closure_ctx = closctx_param;
+    fra.me.closure_funs = CREG;
+    fra.me.REG[0] = p0;
+    CREG[0] = clos_fun0;
+    /* ./parser//parser_prod.nit:5443 */
+    CALL_parser_prod___Visitor___enter_visit(closctx->REG[1])(closctx->REG[1], fra.me.REG[0]);
+    stack_frame_head = fra.me.prev;
+    return;
+  }
+  void OC_parser_prod___ACallExpr___visit_all_2(struct stack_frame_t *closctx, val_t p0, struct stack_frame_t *closctx_param, fun_t clos_fun0){
+    struct {struct stack_frame_t me;} fra;
+    fun_t CREG[1];
+    val_t tmp;
+    fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+    fra.me.file = LOCATE_parser_prod;
+    fra.me.line = 0;
+    fra.me.meth = LOCATE_parser_prod___ACallExpr___visit_all;
+    fra.me.has_broke = 0;
+    fra.me.REG_size = 1;
+    fra.me.REG[0] = NIT_NULL;
+    fra.me.closure_ctx = closctx_param;
+    fra.me.closure_funs = CREG;
+    fra.me.REG[0] = p0;
+    CREG[0] = clos_fun0;
+    /* ./parser//parser_prod.nit:5446 */
+    CALL_parser_prod___Visitor___enter_visit(closctx->REG[1])(closctx->REG[1], fra.me.REG[0]);
+    stack_frame_head = fra.me.prev;
+    return;
+  }
+void parser_prod___ACallAssignExpr___empty_init(val_t p0, int* init_table){
+  int itpos187 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ACallAssignExpr].i;
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  if (init_table[itpos187]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 5451;
+  fra.me.meth = LOCATE_parser_prod___ACallAssignExpr___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos187] = 1;
+  return;
+}
+void parser_prod___ACallAssignExpr___init_acallassignexpr(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4, val_t p5, int* init_table){
+  int itpos188 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ACallAssignExpr].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[5];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos188]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 5453;
+  fra.me.meth = LOCATE_parser_prod___ACallAssignExpr___init_acallassignexpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 6;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  fra.me.REG[3] = p3;
+  fra.me.REG[4] = p4;
+  fra.me.REG[5] = p5;
+  /* ./parser//parser_prod.nit:5461 */
+  CALL_parser_prod___ACallAssignExpr___empty_init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  /* ./parser//parser_prod.nit:5462 */
+  REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Cast failed", NULL, LOCATE_parser_prod, 5462);
+  }
+  ATTR_parser_nodes___ASendExpr____n_expr(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./parser//parser_prod.nit:5463 */
+  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+    nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 5463);
+  }
+  CALL_parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  /* ./parser//parser_prod.nit:5464 */
+  REGB0 = TAG_Bool(fra.me.REG[2]!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Cast failed", NULL, LOCATE_parser_prod, 5464);
+  }
+  ATTR_parser_nodes___ACallFormExpr____n_id(fra.me.REG[0]) = fra.me.REG[2];
+  /* ./parser//parser_prod.nit:5465 */
+  REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+    nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 5465);
+  }
+  CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+  CALL_abstract_collection___Collection___iterate(fra.me.REG[3])(fra.me.REG[3], (&(fra.me)), ((fun_t)OC_parser_prod___ACallAssignExpr___init_acallassignexpr_1));
+  /* ./parser//parser_prod.nit:5471 */
+  REGB0 = TAG_Bool(fra.me.REG[4]!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Cast failed", NULL, LOCATE_parser_prod, 5471);
+  }
+  ATTR_parser_nodes___AAssignFormExpr____n_assign(fra.me.REG[0]) = fra.me.REG[4];
+  /* ./parser//parser_prod.nit:5472 */
+  REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+    nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 5472);
+  }
+  CALL_parser_prod___ANode___parent__eq(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[0]);
+  /* ./parser//parser_prod.nit:5473 */
+  REGB0 = TAG_Bool(fra.me.REG[5]!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Cast failed", NULL, LOCATE_parser_prod, 5473);
+  }
+  ATTR_parser_nodes___AAssignFormExpr____n_value(fra.me.REG[0]) = fra.me.REG[5];
+  /* ./parser//parser_prod.nit:5474 */
+  REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+    nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 5474);
+  }
+  CALL_parser_prod___ANode___parent__eq(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  init_table[itpos188] = 1;
+  return;
+}
+  void OC_parser_prod___ACallAssignExpr___init_acallassignexpr_1(struct stack_frame_t *closctx, val_t p0, struct stack_frame_t *closctx_param, fun_t clos_fun0){
+    struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+    val_t REGB0;
+    fun_t CREG[1];
+    val_t tmp;
+    /* ./parser//parser_prod.nit:5466 */
+    fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+    fra.me.file = LOCATE_parser_prod;
+    fra.me.line = 0;
+    fra.me.meth = LOCATE_parser_prod___ACallAssignExpr___init_acallassignexpr;
+    fra.me.has_broke = 0;
+    fra.me.REG_size = 2;
+    fra.me.REG[0] = NIT_NULL;
+    fra.me.REG[1] = NIT_NULL;
+    fra.me.closure_ctx = closctx_param;
+    fra.me.closure_funs = CREG;
+    fra.me.REG[0] = p0;
+    CREG[0] = clos_fun0;
+    /* ./parser//parser_prod.nit:5467 */
+    REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[0], COLOR_AExpr, ID_AExpr)) /*cast AExpr*/;
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      nit_abort("Assert failed", NULL, LOCATE_parser_prod, 5467);
+    }
+    /* ./parser//parser_prod.nit:5468 */
+    REGB0 = TAG_Bool(ATTR_parser_nodes___ACallFormExpr____n_args(closctx->REG[0])!=NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      nit_abort("Uninitialized attribute %s", "_n_args", LOCATE_parser_prod, 5468);
+    }
+    fra.me.REG[1] = ATTR_parser_nodes___ACallFormExpr____n_args(closctx->REG[0]);
+    CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+    /* ./parser//parser_prod.nit:5469 */
+    CALL_parser_prod___ANode___parent__eq(fra.me.REG[0])(fra.me.REG[0], closctx->REG[0]);
+    stack_frame_head = fra.me.prev;
+    return;
+  }
+void parser_prod___ACallAssignExpr___replace_child(val_t p0, val_t p1, val_t p2){
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t REGB2;
+  val_t REGB3;
+  val_t REGB4;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 5477;
+  fra.me.meth = LOCATE_parser_prod___ACallAssignExpr___replace_child;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  /* ./parser//parser_prod.nit:5479 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ASendExpr____n_expr(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser_prod, 5479);
+  }
+  fra.me.REG[3] = ATTR_parser_nodes___ASendExpr____n_expr(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+    REGB0 = REGB1;
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:5480 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:5481 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 5481);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:5482 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_AExpr, ID_AExpr)) /*cast AExpr*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 5482);
+      }
+      /* ./parser//parser_prod.nit:5483 */
+      ATTR_parser_nodes___ASendExpr____n_expr(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:5485 */
+      nit_abort("Aborted", NULL, LOCATE_parser_prod, 5485);
+    }
+    /* ./parser//parser_prod.nit:5487 */
+    goto label1;
+  }
+  /* ./parser//parser_prod.nit:5489 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ACallFormExpr____n_id(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_id", LOCATE_parser_prod, 5489);
+  }
+  fra.me.REG[3] = ATTR_parser_nodes___ACallFormExpr____n_id(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+    REGB0 = REGB1;
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:5490 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:5491 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 5491);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:5492 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_TId, ID_TId)) /*cast TId*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 5492);
+      }
+      /* ./parser//parser_prod.nit:5493 */
+      ATTR_parser_nodes___ACallFormExpr____n_id(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:5495 */
+      nit_abort("Aborted", NULL, LOCATE_parser_prod, 5495);
+    }
+    /* ./parser//parser_prod.nit:5497 */
+    goto label1;
+  }
+  /* ./parser//parser_prod.nit:5499 */
+  REGB0 = TAG_Int(0);
+  REGB1 = TAG_Bool(ATTR_parser_nodes___ACallFormExpr____n_args(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB1)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_args", LOCATE_parser_prod, 5499);
+  }
+  fra.me.REG[3] = ATTR_parser_nodes___ACallFormExpr____n_args(fra.me.REG[0]);
+  REGB1 = CALL_abstract_collection___Collection___length(fra.me.REG[3])(fra.me.REG[3]);
+  /* ./../lib/standard//kernel.nit:332 */
+  while(1) {
+    /* ./../lib/standard//kernel.nit:212 */
+    REGB2 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
+    /* ./../lib/standard//kernel.nit:332 */
+    if (UNTAG_Bool(REGB2)) {
+      /* ./parser//parser_prod.nit:5499 */
+      REGB2 = REGB0;
+      /* ./parser//parser_prod.nit:5500 */
+      REGB3 = TAG_Bool(ATTR_parser_nodes___ACallFormExpr____n_args(fra.me.REG[0])!=NIT_NULL);
+      if (UNTAG_Bool(REGB3)) {
+      } else {
+        nit_abort("Uninitialized attribute %s", "_n_args", LOCATE_parser_prod, 5500);
+      }
+      fra.me.REG[3] = ATTR_parser_nodes___ACallFormExpr____n_args(fra.me.REG[0]);
+      fra.me.REG[3] = CALL_abstract_collection___MapRead_____bra(fra.me.REG[3])(fra.me.REG[3], REGB2);
+      REGB3 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
+      if (UNTAG_Bool(REGB3)) {
+      } else {
+        REGB4 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+        if (UNTAG_Bool(REGB4)) {
+          REGB4 = TAG_Bool(false);
+          REGB3 = REGB4;
+        } else {
+          REGB4 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+          REGB3 = REGB4;
+        }
+      }
+      if (UNTAG_Bool(REGB3)) {
+        /* ./parser//parser_prod.nit:5501 */
+        REGB3 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+        if (UNTAG_Bool(REGB3)) {
+        } else {
+          REGB4 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+          if (UNTAG_Bool(REGB4)) {
+            REGB4 = TAG_Bool(false);
+            REGB3 = REGB4;
+          } else {
+            REGB4 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+            REGB3 = REGB4;
+          }
+        }
+        REGB3 = TAG_Bool(!UNTAG_Bool(REGB3));
+        if (UNTAG_Bool(REGB3)) {
+          /* ./parser//parser_prod.nit:5502 */
+          REGB3 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_AExpr, ID_AExpr)) /*cast AExpr*/;
+          if (UNTAG_Bool(REGB3)) {
+          } else {
+            nit_abort("Assert failed", NULL, LOCATE_parser_prod, 5502);
+          }
+          /* ./parser//parser_prod.nit:5503 */
+          REGB3 = TAG_Bool(ATTR_parser_nodes___ACallFormExpr____n_args(fra.me.REG[0])!=NIT_NULL);
+          if (UNTAG_Bool(REGB3)) {
+          } else {
+            nit_abort("Uninitialized attribute %s", "_n_args", LOCATE_parser_prod, 5503);
+          }
+          fra.me.REG[3] = ATTR_parser_nodes___ACallFormExpr____n_args(fra.me.REG[0]);
+          CALL_abstract_collection___Map_____braeq(fra.me.REG[3])(fra.me.REG[3], REGB2, fra.me.REG[2]);
+          /* ./parser//parser_prod.nit:5504 */
+          REGB3 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+          if (UNTAG_Bool(REGB3)) {
+            nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 5504);
+          }
+          CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+        } else {
+          /* ./parser//parser_prod.nit:5506 */
+          REGB3 = TAG_Bool(ATTR_parser_nodes___ACallFormExpr____n_args(fra.me.REG[0])!=NIT_NULL);
+          if (UNTAG_Bool(REGB3)) {
+          } else {
+            nit_abort("Uninitialized attribute %s", "_n_args", LOCATE_parser_prod, 5506);
+          }
+          fra.me.REG[3] = ATTR_parser_nodes___ACallFormExpr____n_args(fra.me.REG[0]);
+          CALL_abstract_collection___Map___remove_at(fra.me.REG[3])(fra.me.REG[3], REGB2);
+        }
+        /* ./parser//parser_prod.nit:5508 */
+        goto label1;
+      }
+      /* ./../lib/standard//kernel.nit:334 */
+      REGB2 = TAG_Int(1);
+      /* ./../lib/standard//kernel.nit:215 */
+      REGB2 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB2));
+      /* ./../lib/standard//kernel.nit:334 */
+      REGB0 = REGB2;
+    } else {
+      /* ./../lib/standard//kernel.nit:332 */
+      goto label2;
+    }
+  }
+  label2: while(0);
+  /* ./parser//parser_prod.nit:5511 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AAssignFormExpr____n_assign(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_assign", LOCATE_parser_prod, 5511);
+  }
+  fra.me.REG[3] = ATTR_parser_nodes___AAssignFormExpr____n_assign(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+    REGB0 = REGB1;
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:5512 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:5513 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 5513);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:5514 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_TAssign, ID_TAssign)) /*cast TAssign*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 5514);
+      }
+      /* ./parser//parser_prod.nit:5515 */
+      ATTR_parser_nodes___AAssignFormExpr____n_assign(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:5517 */
+      nit_abort("Aborted", NULL, LOCATE_parser_prod, 5517);
+    }
+    /* ./parser//parser_prod.nit:5519 */
+    goto label1;
+  }
+  /* ./parser//parser_prod.nit:5521 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AAssignFormExpr____n_value(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_value", LOCATE_parser_prod, 5521);
+  }
+  fra.me.REG[3] = ATTR_parser_nodes___AAssignFormExpr____n_value(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+    REGB0 = REGB1;
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:5522 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:5523 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 5523);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:5524 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_AExpr, ID_AExpr)) /*cast AExpr*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 5524);
+      }
+      /* ./parser//parser_prod.nit:5525 */
+      ATTR_parser_nodes___AAssignFormExpr____n_value(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:5527 */
+      nit_abort("Aborted", NULL, LOCATE_parser_prod, 5527);
+    }
+    /* ./parser//parser_prod.nit:5529 */
+    goto label1;
+  }
+  label1: while(0);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser_prod___ACallAssignExpr___visit_all(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 5533;
+  fra.me.meth = LOCATE_parser_prod___ACallAssignExpr___visit_all;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:5535 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ASendExpr____n_expr(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser_prod, 5535);
+  }
+  fra.me.REG[2] = ATTR_parser_nodes___ASendExpr____n_expr(fra.me.REG[0]);
+  CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser_prod.nit:5536 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ACallFormExpr____n_id(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_id", LOCATE_parser_prod, 5536);
+  }
+  fra.me.REG[2] = ATTR_parser_nodes___ACallFormExpr____n_id(fra.me.REG[0]);
+  CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser_prod.nit:5537 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ACallFormExpr____n_args(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_args", LOCATE_parser_prod, 5537);
+  }
+  fra.me.REG[2] = ATTR_parser_nodes___ACallFormExpr____n_args(fra.me.REG[0]);
+  CALL_abstract_collection___Collection___iterate(fra.me.REG[2])(fra.me.REG[2], (&(fra.me)), ((fun_t)OC_parser_prod___ACallAssignExpr___visit_all_1));
+  /* ./parser//parser_prod.nit:5540 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AAssignFormExpr____n_assign(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_assign", LOCATE_parser_prod, 5540);
+  }
+  fra.me.REG[2] = ATTR_parser_nodes___AAssignFormExpr____n_assign(fra.me.REG[0]);
+  CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser_prod.nit:5541 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AAssignFormExpr____n_value(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_value", LOCATE_parser_prod, 5541);
+  }
+  fra.me.REG[0] = ATTR_parser_nodes___AAssignFormExpr____n_value(fra.me.REG[0]);
+  CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+  void OC_parser_prod___ACallAssignExpr___visit_all_1(struct stack_frame_t *closctx, val_t p0, struct stack_frame_t *closctx_param, fun_t clos_fun0){
+    struct {struct stack_frame_t me;} fra;
+    fun_t CREG[1];
+    val_t tmp;
+    fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+    fra.me.file = LOCATE_parser_prod;
+    fra.me.line = 0;
+    fra.me.meth = LOCATE_parser_prod___ACallAssignExpr___visit_all;
+    fra.me.has_broke = 0;
+    fra.me.REG_size = 1;
+    fra.me.REG[0] = NIT_NULL;
+    fra.me.closure_ctx = closctx_param;
+    fra.me.closure_funs = CREG;
+    fra.me.REG[0] = p0;
+    CREG[0] = clos_fun0;
+    /* ./parser//parser_prod.nit:5538 */
+    CALL_parser_prod___Visitor___enter_visit(closctx->REG[1])(closctx->REG[1], fra.me.REG[0]);
+    stack_frame_head = fra.me.prev;
+    return;
+  }
+void parser_prod___ACallReassignExpr___empty_init(val_t p0, int* init_table){
+  int itpos189 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ACallReassignExpr].i;
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  if (init_table[itpos189]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 5545;
+  fra.me.meth = LOCATE_parser_prod___ACallReassignExpr___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos189] = 1;
+  return;
+}
+void parser_prod___ACallReassignExpr___init_acallreassignexpr(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4, val_t p5, int* init_table){
+  int itpos190 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ACallReassignExpr].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[5];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos190]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 5547;
+  fra.me.meth = LOCATE_parser_prod___ACallReassignExpr___init_acallreassignexpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 6;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  fra.me.REG[3] = p3;
+  fra.me.REG[4] = p4;
+  fra.me.REG[5] = p5;
+  /* ./parser//parser_prod.nit:5555 */
+  CALL_parser_prod___ACallReassignExpr___empty_init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  /* ./parser//parser_prod.nit:5556 */
+  REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Cast failed", NULL, LOCATE_parser_prod, 5556);
+  }
+  ATTR_parser_nodes___ASendExpr____n_expr(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./parser//parser_prod.nit:5557 */
+  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+    nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 5557);
+  }
+  CALL_parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  /* ./parser//parser_prod.nit:5558 */
+  REGB0 = TAG_Bool(fra.me.REG[2]!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Cast failed", NULL, LOCATE_parser_prod, 5558);
+  }
+  ATTR_parser_nodes___ACallFormExpr____n_id(fra.me.REG[0]) = fra.me.REG[2];
+  /* ./parser//parser_prod.nit:5559 */
+  REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+    nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 5559);
+  }
+  CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+  CALL_abstract_collection___Collection___iterate(fra.me.REG[3])(fra.me.REG[3], (&(fra.me)), ((fun_t)OC_parser_prod___ACallReassignExpr___init_acallreassignexpr_1));
+  /* ./parser//parser_prod.nit:5565 */
+  REGB0 = TAG_Bool(fra.me.REG[4]!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Cast failed", NULL, LOCATE_parser_prod, 5565);
+  }
+  ATTR_parser_nodes___AReassignFormExpr____n_assign_op(fra.me.REG[0]) = fra.me.REG[4];
+  /* ./parser//parser_prod.nit:5566 */
+  REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+    nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 5566);
+  }
+  CALL_parser_prod___ANode___parent__eq(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[0]);
+  /* ./parser//parser_prod.nit:5567 */
+  REGB0 = TAG_Bool(fra.me.REG[5]!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Cast failed", NULL, LOCATE_parser_prod, 5567);
+  }
+  ATTR_parser_nodes___AReassignFormExpr____n_value(fra.me.REG[0]) = fra.me.REG[5];
+  /* ./parser//parser_prod.nit:5568 */
+  REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+    nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 5568);
+  }
+  CALL_parser_prod___ANode___parent__eq(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  init_table[itpos190] = 1;
+  return;
+}
+  void OC_parser_prod___ACallReassignExpr___init_acallreassignexpr_1(struct stack_frame_t *closctx, val_t p0, struct stack_frame_t *closctx_param, fun_t clos_fun0){
+    struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+    val_t REGB0;
+    fun_t CREG[1];
+    val_t tmp;
+    /* ./parser//parser_prod.nit:5560 */
+    fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+    fra.me.file = LOCATE_parser_prod;
+    fra.me.line = 0;
+    fra.me.meth = LOCATE_parser_prod___ACallReassignExpr___init_acallreassignexpr;
+    fra.me.has_broke = 0;
+    fra.me.REG_size = 2;
+    fra.me.REG[0] = NIT_NULL;
+    fra.me.REG[1] = NIT_NULL;
+    fra.me.closure_ctx = closctx_param;
+    fra.me.closure_funs = CREG;
+    fra.me.REG[0] = p0;
+    CREG[0] = clos_fun0;
+    /* ./parser//parser_prod.nit:5561 */
+    REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[0], COLOR_AExpr, ID_AExpr)) /*cast AExpr*/;
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      nit_abort("Assert failed", NULL, LOCATE_parser_prod, 5561);
+    }
+    /* ./parser//parser_prod.nit:5562 */
+    REGB0 = TAG_Bool(ATTR_parser_nodes___ACallFormExpr____n_args(closctx->REG[0])!=NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      nit_abort("Uninitialized attribute %s", "_n_args", LOCATE_parser_prod, 5562);
+    }
+    fra.me.REG[1] = ATTR_parser_nodes___ACallFormExpr____n_args(closctx->REG[0]);
+    CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+    /* ./parser//parser_prod.nit:5563 */
+    CALL_parser_prod___ANode___parent__eq(fra.me.REG[0])(fra.me.REG[0], closctx->REG[0]);
+    stack_frame_head = fra.me.prev;
+    return;
+  }
+void parser_prod___ACallReassignExpr___replace_child(val_t p0, val_t p1, val_t p2){
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t REGB2;
+  val_t REGB3;
+  val_t REGB4;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 5571;
+  fra.me.meth = LOCATE_parser_prod___ACallReassignExpr___replace_child;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  /* ./parser//parser_prod.nit:5573 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ASendExpr____n_expr(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser_prod, 5573);
+  }
+  fra.me.REG[3] = ATTR_parser_nodes___ASendExpr____n_expr(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+    REGB0 = REGB1;
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:5574 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:5575 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 5575);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:5576 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_AExpr, ID_AExpr)) /*cast AExpr*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 5576);
+      }
+      /* ./parser//parser_prod.nit:5577 */
+      ATTR_parser_nodes___ASendExpr____n_expr(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:5579 */
+      nit_abort("Aborted", NULL, LOCATE_parser_prod, 5579);
+    }
+    /* ./parser//parser_prod.nit:5581 */
+    goto label1;
+  }
+  /* ./parser//parser_prod.nit:5583 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ACallFormExpr____n_id(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_id", LOCATE_parser_prod, 5583);
+  }
+  fra.me.REG[3] = ATTR_parser_nodes___ACallFormExpr____n_id(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+    REGB0 = REGB1;
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:5584 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:5585 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 5585);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:5586 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_TId, ID_TId)) /*cast TId*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 5586);
+      }
+      /* ./parser//parser_prod.nit:5587 */
+      ATTR_parser_nodes___ACallFormExpr____n_id(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:5589 */
+      nit_abort("Aborted", NULL, LOCATE_parser_prod, 5589);
+    }
+    /* ./parser//parser_prod.nit:5591 */
+    goto label1;
+  }
+  /* ./parser//parser_prod.nit:5593 */
+  REGB0 = TAG_Int(0);
+  REGB1 = TAG_Bool(ATTR_parser_nodes___ACallFormExpr____n_args(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB1)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_args", LOCATE_parser_prod, 5593);
+  }
+  fra.me.REG[3] = ATTR_parser_nodes___ACallFormExpr____n_args(fra.me.REG[0]);
+  REGB1 = CALL_abstract_collection___Collection___length(fra.me.REG[3])(fra.me.REG[3]);
+  /* ./../lib/standard//kernel.nit:332 */
+  while(1) {
+    /* ./../lib/standard//kernel.nit:212 */
+    REGB2 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
+    /* ./../lib/standard//kernel.nit:332 */
+    if (UNTAG_Bool(REGB2)) {
+      /* ./parser//parser_prod.nit:5593 */
+      REGB2 = REGB0;
+      /* ./parser//parser_prod.nit:5594 */
+      REGB3 = TAG_Bool(ATTR_parser_nodes___ACallFormExpr____n_args(fra.me.REG[0])!=NIT_NULL);
+      if (UNTAG_Bool(REGB3)) {
+      } else {
+        nit_abort("Uninitialized attribute %s", "_n_args", LOCATE_parser_prod, 5594);
+      }
+      fra.me.REG[3] = ATTR_parser_nodes___ACallFormExpr____n_args(fra.me.REG[0]);
+      fra.me.REG[3] = CALL_abstract_collection___MapRead_____bra(fra.me.REG[3])(fra.me.REG[3], REGB2);
+      REGB3 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
+      if (UNTAG_Bool(REGB3)) {
+      } else {
+        REGB4 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+        if (UNTAG_Bool(REGB4)) {
+          REGB4 = TAG_Bool(false);
+          REGB3 = REGB4;
+        } else {
+          REGB4 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+          REGB3 = REGB4;
+        }
+      }
+      if (UNTAG_Bool(REGB3)) {
+        /* ./parser//parser_prod.nit:5595 */
+        REGB3 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+        if (UNTAG_Bool(REGB3)) {
+        } else {
+          REGB4 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+          if (UNTAG_Bool(REGB4)) {
+            REGB4 = TAG_Bool(false);
+            REGB3 = REGB4;
+          } else {
+            REGB4 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+            REGB3 = REGB4;
+          }
+        }
+        REGB3 = TAG_Bool(!UNTAG_Bool(REGB3));
+        if (UNTAG_Bool(REGB3)) {
+          /* ./parser//parser_prod.nit:5596 */
+          REGB3 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_AExpr, ID_AExpr)) /*cast AExpr*/;
+          if (UNTAG_Bool(REGB3)) {
+          } else {
+            nit_abort("Assert failed", NULL, LOCATE_parser_prod, 5596);
+          }
+          /* ./parser//parser_prod.nit:5597 */
+          REGB3 = TAG_Bool(ATTR_parser_nodes___ACallFormExpr____n_args(fra.me.REG[0])!=NIT_NULL);
+          if (UNTAG_Bool(REGB3)) {
+          } else {
+            nit_abort("Uninitialized attribute %s", "_n_args", LOCATE_parser_prod, 5597);
+          }
+          fra.me.REG[3] = ATTR_parser_nodes___ACallFormExpr____n_args(fra.me.REG[0]);
+          CALL_abstract_collection___Map_____braeq(fra.me.REG[3])(fra.me.REG[3], REGB2, fra.me.REG[2]);
+          /* ./parser//parser_prod.nit:5598 */
+          REGB3 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+          if (UNTAG_Bool(REGB3)) {
+            nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 5598);
+          }
+          CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+        } else {
+          /* ./parser//parser_prod.nit:5600 */
+          REGB3 = TAG_Bool(ATTR_parser_nodes___ACallFormExpr____n_args(fra.me.REG[0])!=NIT_NULL);
+          if (UNTAG_Bool(REGB3)) {
+          } else {
+            nit_abort("Uninitialized attribute %s", "_n_args", LOCATE_parser_prod, 5600);
+          }
+          fra.me.REG[3] = ATTR_parser_nodes___ACallFormExpr____n_args(fra.me.REG[0]);
+          CALL_abstract_collection___Map___remove_at(fra.me.REG[3])(fra.me.REG[3], REGB2);
+        }
+        /* ./parser//parser_prod.nit:5602 */
+        goto label1;
+      }
+      /* ./../lib/standard//kernel.nit:334 */
+      REGB2 = TAG_Int(1);
+      /* ./../lib/standard//kernel.nit:215 */
+      REGB2 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB2));
+      /* ./../lib/standard//kernel.nit:334 */
+      REGB0 = REGB2;
+    } else {
+      /* ./../lib/standard//kernel.nit:332 */
+      goto label2;
+    }
+  }
+  label2: while(0);
+  /* ./parser//parser_prod.nit:5605 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AReassignFormExpr____n_assign_op(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_assign_op", LOCATE_parser_prod, 5605);
+  }
+  fra.me.REG[3] = ATTR_parser_nodes___AReassignFormExpr____n_assign_op(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+    REGB0 = REGB1;
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:5606 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:5607 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 5607);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:5608 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_AAssignOp, ID_AAssignOp)) /*cast AAssignOp*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 5608);
+      }
+      /* ./parser//parser_prod.nit:5609 */
+      ATTR_parser_nodes___AReassignFormExpr____n_assign_op(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:5611 */
+      nit_abort("Aborted", NULL, LOCATE_parser_prod, 5611);
+    }
+    /* ./parser//parser_prod.nit:5613 */
+    goto label1;
+  }
+  /* ./parser//parser_prod.nit:5615 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AReassignFormExpr____n_value(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_value", LOCATE_parser_prod, 5615);
+  }
+  fra.me.REG[3] = ATTR_parser_nodes___AReassignFormExpr____n_value(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+    REGB0 = REGB1;
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:5616 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:5617 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 5617);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:5618 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_AExpr, ID_AExpr)) /*cast AExpr*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 5618);
+      }
+      /* ./parser//parser_prod.nit:5619 */
+      ATTR_parser_nodes___AReassignFormExpr____n_value(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:5621 */
+      nit_abort("Aborted", NULL, LOCATE_parser_prod, 5621);
+    }
+    /* ./parser//parser_prod.nit:5623 */
+    goto label1;
+  }
+  label1: while(0);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser_prod___ACallReassignExpr___visit_all(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 5627;
+  fra.me.meth = LOCATE_parser_prod___ACallReassignExpr___visit_all;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:5629 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ASendExpr____n_expr(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser_prod, 5629);
+  }
+  fra.me.REG[2] = ATTR_parser_nodes___ASendExpr____n_expr(fra.me.REG[0]);
+  CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser_prod.nit:5630 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ACallFormExpr____n_id(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_id", LOCATE_parser_prod, 5630);
+  }
+  fra.me.REG[2] = ATTR_parser_nodes___ACallFormExpr____n_id(fra.me.REG[0]);
+  CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser_prod.nit:5631 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ACallFormExpr____n_args(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_args", LOCATE_parser_prod, 5631);
+  }
+  fra.me.REG[2] = ATTR_parser_nodes___ACallFormExpr____n_args(fra.me.REG[0]);
+  CALL_abstract_collection___Collection___iterate(fra.me.REG[2])(fra.me.REG[2], (&(fra.me)), ((fun_t)OC_parser_prod___ACallReassignExpr___visit_all_1));
+  /* ./parser//parser_prod.nit:5634 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AReassignFormExpr____n_assign_op(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_assign_op", LOCATE_parser_prod, 5634);
+  }
+  fra.me.REG[2] = ATTR_parser_nodes___AReassignFormExpr____n_assign_op(fra.me.REG[0]);
+  CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser_prod.nit:5635 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AReassignFormExpr____n_value(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_value", LOCATE_parser_prod, 5635);
+  }
+  fra.me.REG[0] = ATTR_parser_nodes___AReassignFormExpr____n_value(fra.me.REG[0]);
+  CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+  void OC_parser_prod___ACallReassignExpr___visit_all_1(struct stack_frame_t *closctx, val_t p0, struct stack_frame_t *closctx_param, fun_t clos_fun0){
+    struct {struct stack_frame_t me;} fra;
+    fun_t CREG[1];
+    val_t tmp;
+    fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+    fra.me.file = LOCATE_parser_prod;
+    fra.me.line = 0;
+    fra.me.meth = LOCATE_parser_prod___ACallReassignExpr___visit_all;
+    fra.me.has_broke = 0;
+    fra.me.REG_size = 1;
+    fra.me.REG[0] = NIT_NULL;
+    fra.me.closure_ctx = closctx_param;
+    fra.me.closure_funs = CREG;
+    fra.me.REG[0] = p0;
+    CREG[0] = clos_fun0;
+    /* ./parser//parser_prod.nit:5632 */
+    CALL_parser_prod___Visitor___enter_visit(closctx->REG[1])(closctx->REG[1], fra.me.REG[0]);
+    stack_frame_head = fra.me.prev;
+    return;
+  }
+void parser_prod___ASuperExpr___empty_init(val_t p0, int* init_table){
+  int itpos191 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ASuperExpr].i;
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  if (init_table[itpos191]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 5639;
+  fra.me.meth = LOCATE_parser_prod___ASuperExpr___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos191] = 1;
+  return;
+}
+void parser_prod___ASuperExpr___init_asuperexpr(val_t p0, val_t p1, val_t p2, val_t p3, int* init_table){
+  int itpos192 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ASuperExpr].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  if (init_table[itpos192]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 5641;
+  fra.me.meth = LOCATE_parser_prod___ASuperExpr___init_asuperexpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  fra.me.REG[3] = p3;
+  /* ./parser//parser_prod.nit:5647 */
+  CALL_parser_prod___ASuperExpr___empty_init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  /* ./parser//parser_prod.nit:5648 */
+  ATTR_parser_nodes___ASuperExpr____n_qualified(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./parser//parser_prod.nit:5649 */
+  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:5650 */
+    REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+      nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 5650);
+    }
+    CALL_parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  }
+  /* ./parser//parser_prod.nit:5652 */
+  REGB0 = TAG_Bool(fra.me.REG[2]!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Cast failed", NULL, LOCATE_parser_prod, 5652);
+  }
+  ATTR_parser_nodes___ASuperExpr____n_kwsuper(fra.me.REG[0]) = fra.me.REG[2];
+  /* ./parser//parser_prod.nit:5653 */
+  REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+    nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 5653);
+  }
+  CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+  CALL_abstract_collection___Collection___iterate(fra.me.REG[3])(fra.me.REG[3], (&(fra.me)), ((fun_t)OC_parser_prod___ASuperExpr___init_asuperexpr_1));
+  stack_frame_head = fra.me.prev;
+  init_table[itpos192] = 1;
+  return;
+}
+  void OC_parser_prod___ASuperExpr___init_asuperexpr_1(struct stack_frame_t *closctx, val_t p0, struct stack_frame_t *closctx_param, fun_t clos_fun0){
+    struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+    val_t REGB0;
+    fun_t CREG[1];
+    val_t tmp;
+    /* ./parser//parser_prod.nit:5654 */
+    fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+    fra.me.file = LOCATE_parser_prod;
+    fra.me.line = 0;
+    fra.me.meth = LOCATE_parser_prod___ASuperExpr___init_asuperexpr;
+    fra.me.has_broke = 0;
+    fra.me.REG_size = 2;
+    fra.me.REG[0] = NIT_NULL;
+    fra.me.REG[1] = NIT_NULL;
+    fra.me.closure_ctx = closctx_param;
+    fra.me.closure_funs = CREG;
+    fra.me.REG[0] = p0;
+    CREG[0] = clos_fun0;
+    /* ./parser//parser_prod.nit:5655 */
+    REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[0], COLOR_AExpr, ID_AExpr)) /*cast AExpr*/;
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      nit_abort("Assert failed", NULL, LOCATE_parser_prod, 5655);
+    }
+    /* ./parser//parser_prod.nit:5656 */
+    REGB0 = TAG_Bool(ATTR_parser_nodes___ASuperExpr____n_args(closctx->REG[0])!=NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      nit_abort("Uninitialized attribute %s", "_n_args", LOCATE_parser_prod, 5656);
+    }
+    fra.me.REG[1] = ATTR_parser_nodes___ASuperExpr____n_args(closctx->REG[0]);
+    CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+    /* ./parser//parser_prod.nit:5657 */
+    CALL_parser_prod___ANode___parent__eq(fra.me.REG[0])(fra.me.REG[0], closctx->REG[0]);
+    stack_frame_head = fra.me.prev;
+    return;
+  }
+void parser_prod___ASuperExpr___replace_child(val_t p0, val_t p1, val_t p2){
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t REGB2;
+  val_t REGB3;
+  val_t REGB4;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 5661;
+  fra.me.meth = LOCATE_parser_prod___ASuperExpr___replace_child;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  /* ./parser//parser_prod.nit:5663 */
+  fra.me.REG[3] = ATTR_parser_nodes___ASuperExpr____n_qualified(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+      REGB0 = REGB1;
+    }
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:5664 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:5665 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 5665);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:5666 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_AQualified, ID_AQualified)) /*cast AQualified*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 5666);
+      }
+      /* ./parser//parser_prod.nit:5667 */
+      ATTR_parser_nodes___ASuperExpr____n_qualified(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:5669 */
+      ATTR_parser_nodes___ASuperExpr____n_qualified(fra.me.REG[0]) = NIT_NULL;
+    }
+    /* ./parser//parser_prod.nit:5671 */
+    goto label1;
+  }
+  /* ./parser//parser_prod.nit:5673 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ASuperExpr____n_kwsuper(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_kwsuper", LOCATE_parser_prod, 5673);
+  }
+  fra.me.REG[3] = ATTR_parser_nodes___ASuperExpr____n_kwsuper(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+    REGB0 = REGB1;
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:5674 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:5675 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 5675);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:5676 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_TKwsuper, ID_TKwsuper)) /*cast TKwsuper*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 5676);
+      }
+      /* ./parser//parser_prod.nit:5677 */
+      ATTR_parser_nodes___ASuperExpr____n_kwsuper(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:5679 */
+      nit_abort("Aborted", NULL, LOCATE_parser_prod, 5679);
+    }
+    /* ./parser//parser_prod.nit:5681 */
+    goto label1;
+  }
+  /* ./parser//parser_prod.nit:5683 */
+  REGB0 = TAG_Int(0);
+  REGB1 = TAG_Bool(ATTR_parser_nodes___ASuperExpr____n_args(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB1)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_args", LOCATE_parser_prod, 5683);
+  }
+  fra.me.REG[3] = ATTR_parser_nodes___ASuperExpr____n_args(fra.me.REG[0]);
+  REGB1 = CALL_abstract_collection___Collection___length(fra.me.REG[3])(fra.me.REG[3]);
+  /* ./../lib/standard//kernel.nit:332 */
+  while(1) {
+    /* ./../lib/standard//kernel.nit:212 */
+    REGB2 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
+    /* ./../lib/standard//kernel.nit:332 */
+    if (UNTAG_Bool(REGB2)) {
+      /* ./parser//parser_prod.nit:5683 */
+      REGB2 = REGB0;
+      /* ./parser//parser_prod.nit:5684 */
+      REGB3 = TAG_Bool(ATTR_parser_nodes___ASuperExpr____n_args(fra.me.REG[0])!=NIT_NULL);
+      if (UNTAG_Bool(REGB3)) {
+      } else {
+        nit_abort("Uninitialized attribute %s", "_n_args", LOCATE_parser_prod, 5684);
+      }
+      fra.me.REG[3] = ATTR_parser_nodes___ASuperExpr____n_args(fra.me.REG[0]);
+      fra.me.REG[3] = CALL_abstract_collection___MapRead_____bra(fra.me.REG[3])(fra.me.REG[3], REGB2);
+      REGB3 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
+      if (UNTAG_Bool(REGB3)) {
+      } else {
+        REGB4 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+        if (UNTAG_Bool(REGB4)) {
+          REGB4 = TAG_Bool(false);
+          REGB3 = REGB4;
+        } else {
+          REGB4 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+          REGB3 = REGB4;
+        }
+      }
+      if (UNTAG_Bool(REGB3)) {
+        /* ./parser//parser_prod.nit:5685 */
+        REGB3 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+        if (UNTAG_Bool(REGB3)) {
+        } else {
+          REGB4 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+          if (UNTAG_Bool(REGB4)) {
+            REGB4 = TAG_Bool(false);
+            REGB3 = REGB4;
+          } else {
+            REGB4 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+            REGB3 = REGB4;
+          }
+        }
+        REGB3 = TAG_Bool(!UNTAG_Bool(REGB3));
+        if (UNTAG_Bool(REGB3)) {
+          /* ./parser//parser_prod.nit:5686 */
+          REGB3 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_AExpr, ID_AExpr)) /*cast AExpr*/;
+          if (UNTAG_Bool(REGB3)) {
+          } else {
+            nit_abort("Assert failed", NULL, LOCATE_parser_prod, 5686);
+          }
+          /* ./parser//parser_prod.nit:5687 */
+          REGB3 = TAG_Bool(ATTR_parser_nodes___ASuperExpr____n_args(fra.me.REG[0])!=NIT_NULL);
+          if (UNTAG_Bool(REGB3)) {
+          } else {
+            nit_abort("Uninitialized attribute %s", "_n_args", LOCATE_parser_prod, 5687);
+          }
+          fra.me.REG[3] = ATTR_parser_nodes___ASuperExpr____n_args(fra.me.REG[0]);
+          CALL_abstract_collection___Map_____braeq(fra.me.REG[3])(fra.me.REG[3], REGB2, fra.me.REG[2]);
+          /* ./parser//parser_prod.nit:5688 */
+          REGB3 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+          if (UNTAG_Bool(REGB3)) {
+            nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 5688);
+          }
+          CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+        } else {
+          /* ./parser//parser_prod.nit:5690 */
+          REGB3 = TAG_Bool(ATTR_parser_nodes___ASuperExpr____n_args(fra.me.REG[0])!=NIT_NULL);
+          if (UNTAG_Bool(REGB3)) {
+          } else {
+            nit_abort("Uninitialized attribute %s", "_n_args", LOCATE_parser_prod, 5690);
+          }
+          fra.me.REG[3] = ATTR_parser_nodes___ASuperExpr____n_args(fra.me.REG[0]);
+          CALL_abstract_collection___Map___remove_at(fra.me.REG[3])(fra.me.REG[3], REGB2);
+        }
+        /* ./parser//parser_prod.nit:5692 */
+        goto label1;
+      }
+      /* ./../lib/standard//kernel.nit:334 */
+      REGB2 = TAG_Int(1);
+      /* ./../lib/standard//kernel.nit:215 */
+      REGB2 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB2));
+      /* ./../lib/standard//kernel.nit:334 */
+      REGB0 = REGB2;
+    } else {
+      /* ./../lib/standard//kernel.nit:332 */
+      goto label2;
+    }
+  }
+  label2: while(0);
+  label1: while(0);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser_prod___ASuperExpr___visit_all(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 5697;
+  fra.me.meth = LOCATE_parser_prod___ASuperExpr___visit_all;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:5699 */
+  fra.me.REG[2] = ATTR_parser_nodes___ASuperExpr____n_qualified(fra.me.REG[0]);
+  REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:5700 */
+    fra.me.REG[2] = ATTR_parser_nodes___ASuperExpr____n_qualified(fra.me.REG[0]);
+    REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_AQualified, ID_AQualified)) /*cast AQualified*/;
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      nit_abort("Cast failed", NULL, LOCATE_parser_prod, 5700);
+    }
+    CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  }
+  /* ./parser//parser_prod.nit:5702 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ASuperExpr____n_kwsuper(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_kwsuper", LOCATE_parser_prod, 5702);
+  }
+  fra.me.REG[2] = ATTR_parser_nodes___ASuperExpr____n_kwsuper(fra.me.REG[0]);
+  CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser_prod.nit:5703 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ASuperExpr____n_args(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_args", LOCATE_parser_prod, 5703);
+  }
+  fra.me.REG[0] = ATTR_parser_nodes___ASuperExpr____n_args(fra.me.REG[0]);
+  CALL_abstract_collection___Collection___iterate(fra.me.REG[0])(fra.me.REG[0], (&(fra.me)), ((fun_t)OC_parser_prod___ASuperExpr___visit_all_1));
+  stack_frame_head = fra.me.prev;
+  return;
+}
+  void OC_parser_prod___ASuperExpr___visit_all_1(struct stack_frame_t *closctx, val_t p0, struct stack_frame_t *closctx_param, fun_t clos_fun0){
+    struct {struct stack_frame_t me;} fra;
+    fun_t CREG[1];
+    val_t tmp;
+    fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+    fra.me.file = LOCATE_parser_prod;
+    fra.me.line = 0;
+    fra.me.meth = LOCATE_parser_prod___ASuperExpr___visit_all;
+    fra.me.has_broke = 0;
+    fra.me.REG_size = 1;
+    fra.me.REG[0] = NIT_NULL;
+    fra.me.closure_ctx = closctx_param;
+    fra.me.closure_funs = CREG;
+    fra.me.REG[0] = p0;
+    CREG[0] = clos_fun0;
+    /* ./parser//parser_prod.nit:5704 */
+    CALL_parser_prod___Visitor___enter_visit(closctx->REG[1])(closctx->REG[1], fra.me.REG[0]);
+    stack_frame_head = fra.me.prev;
+    return;
+  }
+void parser_prod___AInitExpr___empty_init(val_t p0, int* init_table){
+  int itpos193 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_AInitExpr].i;
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  if (init_table[itpos193]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 5709;
+  fra.me.meth = LOCATE_parser_prod___AInitExpr___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos193] = 1;
+  return;
+}
+void parser_prod___AInitExpr___init_ainitexpr(val_t p0, val_t p1, val_t p2, val_t p3, int* init_table){
+  int itpos194 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_AInitExpr].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos194]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 5711;
+  fra.me.meth = LOCATE_parser_prod___AInitExpr___init_ainitexpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  fra.me.REG[3] = p3;
+  /* ./parser//parser_prod.nit:5717 */
+  CALL_parser_prod___AInitExpr___empty_init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  /* ./parser//parser_prod.nit:5718 */
+  REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Cast failed", NULL, LOCATE_parser_prod, 5718);
+  }
+  ATTR_parser_nodes___ASendExpr____n_expr(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./parser//parser_prod.nit:5719 */
+  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+    nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 5719);
+  }
+  CALL_parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  /* ./parser//parser_prod.nit:5720 */
+  REGB0 = TAG_Bool(fra.me.REG[2]!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Cast failed", NULL, LOCATE_parser_prod, 5720);
+  }
+  ATTR_parser_nodes___AInitExpr____n_kwinit(fra.me.REG[0]) = fra.me.REG[2];
+  /* ./parser//parser_prod.nit:5721 */
+  REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+    nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 5721);
+  }
+  CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+  CALL_abstract_collection___Collection___iterate(fra.me.REG[3])(fra.me.REG[3], (&(fra.me)), ((fun_t)OC_parser_prod___AInitExpr___init_ainitexpr_1));
+  stack_frame_head = fra.me.prev;
+  init_table[itpos194] = 1;
+  return;
+}
+  void OC_parser_prod___AInitExpr___init_ainitexpr_1(struct stack_frame_t *closctx, val_t p0, struct stack_frame_t *closctx_param, fun_t clos_fun0){
+    struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+    val_t REGB0;
+    fun_t CREG[1];
+    val_t tmp;
+    /* ./parser//parser_prod.nit:5722 */
+    fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+    fra.me.file = LOCATE_parser_prod;
+    fra.me.line = 0;
+    fra.me.meth = LOCATE_parser_prod___AInitExpr___init_ainitexpr;
+    fra.me.has_broke = 0;
+    fra.me.REG_size = 2;
+    fra.me.REG[0] = NIT_NULL;
+    fra.me.REG[1] = NIT_NULL;
+    fra.me.closure_ctx = closctx_param;
+    fra.me.closure_funs = CREG;
+    fra.me.REG[0] = p0;
+    CREG[0] = clos_fun0;
+    /* ./parser//parser_prod.nit:5723 */
+    REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[0], COLOR_AExpr, ID_AExpr)) /*cast AExpr*/;
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      nit_abort("Assert failed", NULL, LOCATE_parser_prod, 5723);
+    }
+    /* ./parser//parser_prod.nit:5724 */
+    REGB0 = TAG_Bool(ATTR_parser_nodes___AInitExpr____n_args(closctx->REG[0])!=NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      nit_abort("Uninitialized attribute %s", "_n_args", LOCATE_parser_prod, 5724);
+    }
+    fra.me.REG[1] = ATTR_parser_nodes___AInitExpr____n_args(closctx->REG[0]);
+    CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+    /* ./parser//parser_prod.nit:5725 */
+    CALL_parser_prod___ANode___parent__eq(fra.me.REG[0])(fra.me.REG[0], closctx->REG[0]);
+    stack_frame_head = fra.me.prev;
+    return;
+  }
+void parser_prod___AInitExpr___replace_child(val_t p0, val_t p1, val_t p2){
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t REGB2;
+  val_t REGB3;
+  val_t REGB4;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 5729;
+  fra.me.meth = LOCATE_parser_prod___AInitExpr___replace_child;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  /* ./parser//parser_prod.nit:5731 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ASendExpr____n_expr(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser_prod, 5731);
+  }
+  fra.me.REG[3] = ATTR_parser_nodes___ASendExpr____n_expr(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+    REGB0 = REGB1;
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:5732 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:5733 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 5733);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:5734 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_AExpr, ID_AExpr)) /*cast AExpr*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 5734);
+      }
+      /* ./parser//parser_prod.nit:5735 */
+      ATTR_parser_nodes___ASendExpr____n_expr(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:5737 */
+      nit_abort("Aborted", NULL, LOCATE_parser_prod, 5737);
+    }
+    /* ./parser//parser_prod.nit:5739 */
+    goto label1;
+  }
+  /* ./parser//parser_prod.nit:5741 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AInitExpr____n_kwinit(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_kwinit", LOCATE_parser_prod, 5741);
+  }
+  fra.me.REG[3] = ATTR_parser_nodes___AInitExpr____n_kwinit(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+    REGB0 = REGB1;
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:5742 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:5743 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 5743);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:5744 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_TKwinit, ID_TKwinit)) /*cast TKwinit*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 5744);
+      }
+      /* ./parser//parser_prod.nit:5745 */
+      ATTR_parser_nodes___AInitExpr____n_kwinit(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:5747 */
+      nit_abort("Aborted", NULL, LOCATE_parser_prod, 5747);
+    }
+    /* ./parser//parser_prod.nit:5749 */
+    goto label1;
+  }
+  /* ./parser//parser_prod.nit:5751 */
+  REGB0 = TAG_Int(0);
+  REGB1 = TAG_Bool(ATTR_parser_nodes___AInitExpr____n_args(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB1)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_args", LOCATE_parser_prod, 5751);
+  }
+  fra.me.REG[3] = ATTR_parser_nodes___AInitExpr____n_args(fra.me.REG[0]);
+  REGB1 = CALL_abstract_collection___Collection___length(fra.me.REG[3])(fra.me.REG[3]);
+  /* ./../lib/standard//kernel.nit:332 */
+  while(1) {
+    /* ./../lib/standard//kernel.nit:212 */
+    REGB2 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
+    /* ./../lib/standard//kernel.nit:332 */
+    if (UNTAG_Bool(REGB2)) {
+      /* ./parser//parser_prod.nit:5751 */
+      REGB2 = REGB0;
+      /* ./parser//parser_prod.nit:5752 */
+      REGB3 = TAG_Bool(ATTR_parser_nodes___AInitExpr____n_args(fra.me.REG[0])!=NIT_NULL);
+      if (UNTAG_Bool(REGB3)) {
+      } else {
+        nit_abort("Uninitialized attribute %s", "_n_args", LOCATE_parser_prod, 5752);
+      }
+      fra.me.REG[3] = ATTR_parser_nodes___AInitExpr____n_args(fra.me.REG[0]);
+      fra.me.REG[3] = CALL_abstract_collection___MapRead_____bra(fra.me.REG[3])(fra.me.REG[3], REGB2);
+      REGB3 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
+      if (UNTAG_Bool(REGB3)) {
+      } else {
+        REGB4 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+        if (UNTAG_Bool(REGB4)) {
+          REGB4 = TAG_Bool(false);
+          REGB3 = REGB4;
+        } else {
+          REGB4 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+          REGB3 = REGB4;
+        }
+      }
+      if (UNTAG_Bool(REGB3)) {
+        /* ./parser//parser_prod.nit:5753 */
+        REGB3 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+        if (UNTAG_Bool(REGB3)) {
+        } else {
+          REGB4 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+          if (UNTAG_Bool(REGB4)) {
+            REGB4 = TAG_Bool(false);
+            REGB3 = REGB4;
+          } else {
+            REGB4 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+            REGB3 = REGB4;
+          }
+        }
+        REGB3 = TAG_Bool(!UNTAG_Bool(REGB3));
+        if (UNTAG_Bool(REGB3)) {
+          /* ./parser//parser_prod.nit:5754 */
+          REGB3 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_AExpr, ID_AExpr)) /*cast AExpr*/;
+          if (UNTAG_Bool(REGB3)) {
+          } else {
+            nit_abort("Assert failed", NULL, LOCATE_parser_prod, 5754);
+          }
+          /* ./parser//parser_prod.nit:5755 */
+          REGB3 = TAG_Bool(ATTR_parser_nodes___AInitExpr____n_args(fra.me.REG[0])!=NIT_NULL);
+          if (UNTAG_Bool(REGB3)) {
+          } else {
+            nit_abort("Uninitialized attribute %s", "_n_args", LOCATE_parser_prod, 5755);
+          }
+          fra.me.REG[3] = ATTR_parser_nodes___AInitExpr____n_args(fra.me.REG[0]);
+          CALL_abstract_collection___Map_____braeq(fra.me.REG[3])(fra.me.REG[3], REGB2, fra.me.REG[2]);
+          /* ./parser//parser_prod.nit:5756 */
+          REGB3 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+          if (UNTAG_Bool(REGB3)) {
+            nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 5756);
+          }
+          CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+        } else {
+          /* ./parser//parser_prod.nit:5758 */
+          REGB3 = TAG_Bool(ATTR_parser_nodes___AInitExpr____n_args(fra.me.REG[0])!=NIT_NULL);
+          if (UNTAG_Bool(REGB3)) {
+          } else {
+            nit_abort("Uninitialized attribute %s", "_n_args", LOCATE_parser_prod, 5758);
+          }
+          fra.me.REG[3] = ATTR_parser_nodes___AInitExpr____n_args(fra.me.REG[0]);
+          CALL_abstract_collection___Map___remove_at(fra.me.REG[3])(fra.me.REG[3], REGB2);
+        }
+        /* ./parser//parser_prod.nit:5760 */
+        goto label1;
+      }
+      /* ./../lib/standard//kernel.nit:334 */
+      REGB2 = TAG_Int(1);
+      /* ./../lib/standard//kernel.nit:215 */
+      REGB2 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB2));
+      /* ./../lib/standard//kernel.nit:334 */
+      REGB0 = REGB2;
+    } else {
+      /* ./../lib/standard//kernel.nit:332 */
+      goto label2;
+    }
+  }
+  label2: while(0);
+  label1: while(0);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser_prod___AInitExpr___visit_all(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 5765;
+  fra.me.meth = LOCATE_parser_prod___AInitExpr___visit_all;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:5767 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ASendExpr____n_expr(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser_prod, 5767);
+  }
+  fra.me.REG[2] = ATTR_parser_nodes___ASendExpr____n_expr(fra.me.REG[0]);
+  CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser_prod.nit:5768 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AInitExpr____n_kwinit(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_kwinit", LOCATE_parser_prod, 5768);
+  }
+  fra.me.REG[2] = ATTR_parser_nodes___AInitExpr____n_kwinit(fra.me.REG[0]);
+  CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser_prod.nit:5769 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AInitExpr____n_args(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_args", LOCATE_parser_prod, 5769);
+  }
+  fra.me.REG[0] = ATTR_parser_nodes___AInitExpr____n_args(fra.me.REG[0]);
+  CALL_abstract_collection___Collection___iterate(fra.me.REG[0])(fra.me.REG[0], (&(fra.me)), ((fun_t)OC_parser_prod___AInitExpr___visit_all_1));
+  stack_frame_head = fra.me.prev;
+  return;
+}
+  void OC_parser_prod___AInitExpr___visit_all_1(struct stack_frame_t *closctx, val_t p0, struct stack_frame_t *closctx_param, fun_t clos_fun0){
+    struct {struct stack_frame_t me;} fra;
+    fun_t CREG[1];
+    val_t tmp;
+    fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+    fra.me.file = LOCATE_parser_prod;
+    fra.me.line = 0;
+    fra.me.meth = LOCATE_parser_prod___AInitExpr___visit_all;
+    fra.me.has_broke = 0;
+    fra.me.REG_size = 1;
+    fra.me.REG[0] = NIT_NULL;
+    fra.me.closure_ctx = closctx_param;
+    fra.me.closure_funs = CREG;
+    fra.me.REG[0] = p0;
+    CREG[0] = clos_fun0;
+    /* ./parser//parser_prod.nit:5770 */
+    CALL_parser_prod___Visitor___enter_visit(closctx->REG[1])(closctx->REG[1], fra.me.REG[0]);
+    stack_frame_head = fra.me.prev;
+    return;
+  }
+void parser_prod___ABraExpr___empty_init(val_t p0, int* init_table){
+  int itpos195 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ABraExpr].i;
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  if (init_table[itpos195]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 5775;
+  fra.me.meth = LOCATE_parser_prod___ABraExpr___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos195] = 1;
+  return;
+}
+void parser_prod___ABraExpr___init_abraexpr(val_t p0, val_t p1, val_t p2, val_t p3, int* init_table){
+  int itpos196 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ABraExpr].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos196]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 5777;
+  fra.me.meth = LOCATE_parser_prod___ABraExpr___init_abraexpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  fra.me.REG[3] = p3;
+  /* ./parser//parser_prod.nit:5783 */
+  CALL_parser_prod___ABraExpr___empty_init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  /* ./parser//parser_prod.nit:5784 */
+  REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Cast failed", NULL, LOCATE_parser_prod, 5784);
+  }
+  ATTR_parser_nodes___ASendExpr____n_expr(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./parser//parser_prod.nit:5785 */
+  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+    nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 5785);
+  }
+  CALL_parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  CALL_abstract_collection___Collection___iterate(fra.me.REG[2])(fra.me.REG[2], (&(fra.me)), ((fun_t)OC_parser_prod___ABraExpr___init_abraexpr_1));
+  CALL_abstract_collection___Collection___iterate(fra.me.REG[3])(fra.me.REG[3], (&(fra.me)), ((fun_t)OC_parser_prod___ABraExpr___init_abraexpr_2));
+  stack_frame_head = fra.me.prev;
+  init_table[itpos196] = 1;
+  return;
+}
+  void OC_parser_prod___ABraExpr___init_abraexpr_1(struct stack_frame_t *closctx, val_t p0, struct stack_frame_t *closctx_param, fun_t clos_fun0){
+    struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+    val_t REGB0;
+    fun_t CREG[1];
+    val_t tmp;
+    /* ./parser//parser_prod.nit:5786 */
+    fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+    fra.me.file = LOCATE_parser_prod;
+    fra.me.line = 0;
+    fra.me.meth = LOCATE_parser_prod___ABraExpr___init_abraexpr;
+    fra.me.has_broke = 0;
+    fra.me.REG_size = 2;
+    fra.me.REG[0] = NIT_NULL;
+    fra.me.REG[1] = NIT_NULL;
+    fra.me.closure_ctx = closctx_param;
+    fra.me.closure_funs = CREG;
+    fra.me.REG[0] = p0;
+    CREG[0] = clos_fun0;
+    /* ./parser//parser_prod.nit:5787 */
+    REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[0], COLOR_AExpr, ID_AExpr)) /*cast AExpr*/;
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      nit_abort("Assert failed", NULL, LOCATE_parser_prod, 5787);
+    }
+    /* ./parser//parser_prod.nit:5788 */
+    REGB0 = TAG_Bool(ATTR_parser_nodes___ABraFormExpr____n_args(closctx->REG[0])!=NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      nit_abort("Uninitialized attribute %s", "_n_args", LOCATE_parser_prod, 5788);
+    }
+    fra.me.REG[1] = ATTR_parser_nodes___ABraFormExpr____n_args(closctx->REG[0]);
+    CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+    /* ./parser//parser_prod.nit:5789 */
+    CALL_parser_prod___ANode___parent__eq(fra.me.REG[0])(fra.me.REG[0], closctx->REG[0]);
+    stack_frame_head = fra.me.prev;
+    return;
+  }
+  void OC_parser_prod___ABraExpr___init_abraexpr_2(struct stack_frame_t *closctx, val_t p0, struct stack_frame_t *closctx_param, fun_t clos_fun0){
+    struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+    val_t REGB0;
+    fun_t CREG[1];
+    val_t tmp;
+    /* ./parser//parser_prod.nit:5791 */
+    fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+    fra.me.file = LOCATE_parser_prod;
+    fra.me.line = 0;
+    fra.me.meth = LOCATE_parser_prod___ABraExpr___init_abraexpr;
+    fra.me.has_broke = 0;
+    fra.me.REG_size = 2;
+    fra.me.REG[0] = NIT_NULL;
+    fra.me.REG[1] = NIT_NULL;
+    fra.me.closure_ctx = closctx_param;
+    fra.me.closure_funs = CREG;
+    fra.me.REG[0] = p0;
+    CREG[0] = clos_fun0;
+    /* ./parser//parser_prod.nit:5792 */
+    REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[0], COLOR_AClosureDef, ID_AClosureDef)) /*cast AClosureDef*/;
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      nit_abort("Assert failed", NULL, LOCATE_parser_prod, 5792);
+    }
+    /* ./parser//parser_prod.nit:5793 */
+    REGB0 = TAG_Bool(ATTR_parser_nodes___ASendExpr____n_closure_defs(closctx->REG[0])!=NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      nit_abort("Uninitialized attribute %s", "_n_closure_defs", LOCATE_parser_prod, 5793);
+    }
+    fra.me.REG[1] = ATTR_parser_nodes___ASendExpr____n_closure_defs(closctx->REG[0]);
+    CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+    /* ./parser//parser_prod.nit:5794 */
+    CALL_parser_prod___ANode___parent__eq(fra.me.REG[0])(fra.me.REG[0], closctx->REG[0]);
+    stack_frame_head = fra.me.prev;
+    return;
+  }
+void parser_prod___ABraExpr___replace_child(val_t p0, val_t p1, val_t p2){
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t REGB2;
+  val_t REGB3;
+  val_t REGB4;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 5798;
+  fra.me.meth = LOCATE_parser_prod___ABraExpr___replace_child;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  /* ./parser//parser_prod.nit:5800 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ASendExpr____n_expr(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser_prod, 5800);
+  }
+  fra.me.REG[3] = ATTR_parser_nodes___ASendExpr____n_expr(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+    REGB0 = REGB1;
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:5801 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:5802 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 5802);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:5803 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_AExpr, ID_AExpr)) /*cast AExpr*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 5803);
+      }
+      /* ./parser//parser_prod.nit:5804 */
+      ATTR_parser_nodes___ASendExpr____n_expr(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:5806 */
+      nit_abort("Aborted", NULL, LOCATE_parser_prod, 5806);
+    }
+    /* ./parser//parser_prod.nit:5808 */
+    goto label1;
+  }
+  /* ./parser//parser_prod.nit:5810 */
+  REGB0 = TAG_Int(0);
+  REGB1 = TAG_Bool(ATTR_parser_nodes___ABraFormExpr____n_args(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB1)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_args", LOCATE_parser_prod, 5810);
+  }
+  fra.me.REG[3] = ATTR_parser_nodes___ABraFormExpr____n_args(fra.me.REG[0]);
+  REGB1 = CALL_abstract_collection___Collection___length(fra.me.REG[3])(fra.me.REG[3]);
+  /* ./../lib/standard//kernel.nit:332 */
+  while(1) {
+    /* ./../lib/standard//kernel.nit:212 */
+    REGB2 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
+    /* ./../lib/standard//kernel.nit:332 */
+    if (UNTAG_Bool(REGB2)) {
+      /* ./parser//parser_prod.nit:5810 */
+      REGB2 = REGB0;
+      /* ./parser//parser_prod.nit:5811 */
+      REGB3 = TAG_Bool(ATTR_parser_nodes___ABraFormExpr____n_args(fra.me.REG[0])!=NIT_NULL);
+      if (UNTAG_Bool(REGB3)) {
+      } else {
+        nit_abort("Uninitialized attribute %s", "_n_args", LOCATE_parser_prod, 5811);
+      }
+      fra.me.REG[3] = ATTR_parser_nodes___ABraFormExpr____n_args(fra.me.REG[0]);
+      fra.me.REG[3] = CALL_abstract_collection___MapRead_____bra(fra.me.REG[3])(fra.me.REG[3], REGB2);
+      REGB3 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
+      if (UNTAG_Bool(REGB3)) {
+      } else {
+        REGB4 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+        if (UNTAG_Bool(REGB4)) {
+          REGB4 = TAG_Bool(false);
+          REGB3 = REGB4;
+        } else {
+          REGB4 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+          REGB3 = REGB4;
+        }
+      }
+      if (UNTAG_Bool(REGB3)) {
+        /* ./parser//parser_prod.nit:5812 */
+        REGB3 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+        if (UNTAG_Bool(REGB3)) {
+        } else {
+          REGB4 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+          if (UNTAG_Bool(REGB4)) {
+            REGB4 = TAG_Bool(false);
+            REGB3 = REGB4;
+          } else {
+            REGB4 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+            REGB3 = REGB4;
+          }
+        }
+        REGB3 = TAG_Bool(!UNTAG_Bool(REGB3));
+        if (UNTAG_Bool(REGB3)) {
+          /* ./parser//parser_prod.nit:5813 */
+          REGB3 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_AExpr, ID_AExpr)) /*cast AExpr*/;
+          if (UNTAG_Bool(REGB3)) {
+          } else {
+            nit_abort("Assert failed", NULL, LOCATE_parser_prod, 5813);
+          }
+          /* ./parser//parser_prod.nit:5814 */
+          REGB3 = TAG_Bool(ATTR_parser_nodes___ABraFormExpr____n_args(fra.me.REG[0])!=NIT_NULL);
+          if (UNTAG_Bool(REGB3)) {
+          } else {
+            nit_abort("Uninitialized attribute %s", "_n_args", LOCATE_parser_prod, 5814);
+          }
+          fra.me.REG[3] = ATTR_parser_nodes___ABraFormExpr____n_args(fra.me.REG[0]);
+          CALL_abstract_collection___Map_____braeq(fra.me.REG[3])(fra.me.REG[3], REGB2, fra.me.REG[2]);
+          /* ./parser//parser_prod.nit:5815 */
+          REGB3 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+          if (UNTAG_Bool(REGB3)) {
+            nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 5815);
+          }
+          CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+        } else {
+          /* ./parser//parser_prod.nit:5817 */
+          REGB3 = TAG_Bool(ATTR_parser_nodes___ABraFormExpr____n_args(fra.me.REG[0])!=NIT_NULL);
+          if (UNTAG_Bool(REGB3)) {
+          } else {
+            nit_abort("Uninitialized attribute %s", "_n_args", LOCATE_parser_prod, 5817);
+          }
+          fra.me.REG[3] = ATTR_parser_nodes___ABraFormExpr____n_args(fra.me.REG[0]);
+          CALL_abstract_collection___Map___remove_at(fra.me.REG[3])(fra.me.REG[3], REGB2);
+        }
+        /* ./parser//parser_prod.nit:5819 */
+        goto label1;
+      }
+      /* ./../lib/standard//kernel.nit:334 */
+      REGB2 = TAG_Int(1);
+      /* ./../lib/standard//kernel.nit:215 */
+      REGB2 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB2));
+      /* ./../lib/standard//kernel.nit:334 */
+      REGB0 = REGB2;
+    } else {
+      /* ./../lib/standard//kernel.nit:332 */
+      goto label2;
+    }
+  }
+  label2: while(0);
+  /* ./parser//parser_prod.nit:5822 */
+  REGB0 = TAG_Int(0);
+  REGB1 = TAG_Bool(ATTR_parser_nodes___ASendExpr____n_closure_defs(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB1)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_closure_defs", LOCATE_parser_prod, 5822);
+  }
+  fra.me.REG[3] = ATTR_parser_nodes___ASendExpr____n_closure_defs(fra.me.REG[0]);
+  REGB1 = CALL_abstract_collection___Collection___length(fra.me.REG[3])(fra.me.REG[3]);
+  /* ./../lib/standard//kernel.nit:332 */
+  while(1) {
+    /* ./../lib/standard//kernel.nit:212 */
+    REGB2 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
+    /* ./../lib/standard//kernel.nit:332 */
+    if (UNTAG_Bool(REGB2)) {
+      /* ./parser//parser_prod.nit:5822 */
+      REGB2 = REGB0;
+      /* ./parser//parser_prod.nit:5823 */
+      REGB3 = TAG_Bool(ATTR_parser_nodes___ASendExpr____n_closure_defs(fra.me.REG[0])!=NIT_NULL);
+      if (UNTAG_Bool(REGB3)) {
+      } else {
+        nit_abort("Uninitialized attribute %s", "_n_closure_defs", LOCATE_parser_prod, 5823);
+      }
+      fra.me.REG[3] = ATTR_parser_nodes___ASendExpr____n_closure_defs(fra.me.REG[0]);
+      fra.me.REG[3] = CALL_abstract_collection___MapRead_____bra(fra.me.REG[3])(fra.me.REG[3], REGB2);
+      REGB3 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
+      if (UNTAG_Bool(REGB3)) {
+      } else {
+        REGB4 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+        if (UNTAG_Bool(REGB4)) {
+          REGB4 = TAG_Bool(false);
+          REGB3 = REGB4;
+        } else {
+          REGB4 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+          REGB3 = REGB4;
+        }
+      }
+      if (UNTAG_Bool(REGB3)) {
+        /* ./parser//parser_prod.nit:5824 */
+        REGB3 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+        if (UNTAG_Bool(REGB3)) {
+        } else {
+          REGB4 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+          if (UNTAG_Bool(REGB4)) {
+            REGB4 = TAG_Bool(false);
+            REGB3 = REGB4;
+          } else {
+            REGB4 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+            REGB3 = REGB4;
+          }
+        }
+        REGB3 = TAG_Bool(!UNTAG_Bool(REGB3));
+        if (UNTAG_Bool(REGB3)) {
+          /* ./parser//parser_prod.nit:5825 */
+          REGB3 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_AClosureDef, ID_AClosureDef)) /*cast AClosureDef*/;
+          if (UNTAG_Bool(REGB3)) {
+          } else {
+            nit_abort("Assert failed", NULL, LOCATE_parser_prod, 5825);
+          }
+          /* ./parser//parser_prod.nit:5826 */
+          REGB3 = TAG_Bool(ATTR_parser_nodes___ASendExpr____n_closure_defs(fra.me.REG[0])!=NIT_NULL);
+          if (UNTAG_Bool(REGB3)) {
+          } else {
+            nit_abort("Uninitialized attribute %s", "_n_closure_defs", LOCATE_parser_prod, 5826);
+          }
+          fra.me.REG[3] = ATTR_parser_nodes___ASendExpr____n_closure_defs(fra.me.REG[0]);
+          CALL_abstract_collection___Map_____braeq(fra.me.REG[3])(fra.me.REG[3], REGB2, fra.me.REG[2]);
+          /* ./parser//parser_prod.nit:5827 */
+          REGB3 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+          if (UNTAG_Bool(REGB3)) {
+            nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 5827);
+          }
+          CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+        } else {
+          /* ./parser//parser_prod.nit:5829 */
+          REGB3 = TAG_Bool(ATTR_parser_nodes___ASendExpr____n_closure_defs(fra.me.REG[0])!=NIT_NULL);
+          if (UNTAG_Bool(REGB3)) {
+          } else {
+            nit_abort("Uninitialized attribute %s", "_n_closure_defs", LOCATE_parser_prod, 5829);
+          }
+          fra.me.REG[3] = ATTR_parser_nodes___ASendExpr____n_closure_defs(fra.me.REG[0]);
+          CALL_abstract_collection___Map___remove_at(fra.me.REG[3])(fra.me.REG[3], REGB2);
+        }
+        /* ./parser//parser_prod.nit:5831 */
+        goto label1;
+      }
+      /* ./../lib/standard//kernel.nit:334 */
+      REGB2 = TAG_Int(1);
+      /* ./../lib/standard//kernel.nit:215 */
+      REGB2 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB2));
+      /* ./../lib/standard//kernel.nit:334 */
+      REGB0 = REGB2;
+    } else {
+      /* ./../lib/standard//kernel.nit:332 */
+      goto label3;
+    }
+  }
+  label3: while(0);
+  label1: while(0);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser_prod___ABraExpr___visit_all(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 5836;
+  fra.me.meth = LOCATE_parser_prod___ABraExpr___visit_all;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:5838 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ASendExpr____n_expr(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser_prod, 5838);
+  }
+  fra.me.REG[2] = ATTR_parser_nodes___ASendExpr____n_expr(fra.me.REG[0]);
+  CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser_prod.nit:5839 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ABraFormExpr____n_args(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_args", LOCATE_parser_prod, 5839);
+  }
+  fra.me.REG[2] = ATTR_parser_nodes___ABraFormExpr____n_args(fra.me.REG[0]);
+  CALL_abstract_collection___Collection___iterate(fra.me.REG[2])(fra.me.REG[2], (&(fra.me)), ((fun_t)OC_parser_prod___ABraExpr___visit_all_1));
+  /* ./parser//parser_prod.nit:5842 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ASendExpr____n_closure_defs(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_closure_defs", LOCATE_parser_prod, 5842);
+  }
+  fra.me.REG[0] = ATTR_parser_nodes___ASendExpr____n_closure_defs(fra.me.REG[0]);
+  CALL_abstract_collection___Collection___iterate(fra.me.REG[0])(fra.me.REG[0], (&(fra.me)), ((fun_t)OC_parser_prod___ABraExpr___visit_all_2));
+  stack_frame_head = fra.me.prev;
+  return;
+}
+  void OC_parser_prod___ABraExpr___visit_all_1(struct stack_frame_t *closctx, val_t p0, struct stack_frame_t *closctx_param, fun_t clos_fun0){
+    struct {struct stack_frame_t me;} fra;
+    fun_t CREG[1];
+    val_t tmp;
+    fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+    fra.me.file = LOCATE_parser_prod;
+    fra.me.line = 0;
+    fra.me.meth = LOCATE_parser_prod___ABraExpr___visit_all;
+    fra.me.has_broke = 0;
+    fra.me.REG_size = 1;
+    fra.me.REG[0] = NIT_NULL;
+    fra.me.closure_ctx = closctx_param;
+    fra.me.closure_funs = CREG;
+    fra.me.REG[0] = p0;
+    CREG[0] = clos_fun0;
+    /* ./parser//parser_prod.nit:5840 */
+    CALL_parser_prod___Visitor___enter_visit(closctx->REG[1])(closctx->REG[1], fra.me.REG[0]);
+    stack_frame_head = fra.me.prev;
+    return;
+  }
+  void OC_parser_prod___ABraExpr___visit_all_2(struct stack_frame_t *closctx, val_t p0, struct stack_frame_t *closctx_param, fun_t clos_fun0){
+    struct {struct stack_frame_t me;} fra;
+    fun_t CREG[1];
+    val_t tmp;
+    fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+    fra.me.file = LOCATE_parser_prod;
+    fra.me.line = 0;
+    fra.me.meth = LOCATE_parser_prod___ABraExpr___visit_all;
+    fra.me.has_broke = 0;
+    fra.me.REG_size = 1;
+    fra.me.REG[0] = NIT_NULL;
+    fra.me.closure_ctx = closctx_param;
+    fra.me.closure_funs = CREG;
+    fra.me.REG[0] = p0;
+    CREG[0] = clos_fun0;
+    /* ./parser//parser_prod.nit:5843 */
+    CALL_parser_prod___Visitor___enter_visit(closctx->REG[1])(closctx->REG[1], fra.me.REG[0]);
+    stack_frame_head = fra.me.prev;
+    return;
+  }
+void parser_prod___ABraAssignExpr___empty_init(val_t p0, int* init_table){
+  int itpos197 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ABraAssignExpr].i;
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  if (init_table[itpos197]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 5848;
+  fra.me.meth = LOCATE_parser_prod___ABraAssignExpr___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos197] = 1;
+  return;
+}
+void parser_prod___ABraAssignExpr___init_abraassignexpr(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4, int* init_table){
+  int itpos198 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ABraAssignExpr].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos198]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 5850;
+  fra.me.meth = LOCATE_parser_prod___ABraAssignExpr___init_abraassignexpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  fra.me.REG[3] = p3;
+  fra.me.REG[4] = p4;
+  /* ./parser//parser_prod.nit:5857 */
+  CALL_parser_prod___ABraAssignExpr___empty_init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  /* ./parser//parser_prod.nit:5858 */
+  REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Cast failed", NULL, LOCATE_parser_prod, 5858);
+  }
+  ATTR_parser_nodes___ASendExpr____n_expr(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./parser//parser_prod.nit:5859 */
+  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+    nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 5859);
+  }
+  CALL_parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  CALL_abstract_collection___Collection___iterate(fra.me.REG[2])(fra.me.REG[2], (&(fra.me)), ((fun_t)OC_parser_prod___ABraAssignExpr___init_abraassignexpr_1));
+  /* ./parser//parser_prod.nit:5865 */
+  REGB0 = TAG_Bool(fra.me.REG[3]!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Cast failed", NULL, LOCATE_parser_prod, 5865);
+  }
+  ATTR_parser_nodes___AAssignFormExpr____n_assign(fra.me.REG[0]) = fra.me.REG[3];
+  /* ./parser//parser_prod.nit:5866 */
+  REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+    nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 5866);
+  }
+  CALL_parser_prod___ANode___parent__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[0]);
+  /* ./parser//parser_prod.nit:5867 */
+  REGB0 = TAG_Bool(fra.me.REG[4]!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Cast failed", NULL, LOCATE_parser_prod, 5867);
+  }
+  ATTR_parser_nodes___AAssignFormExpr____n_value(fra.me.REG[0]) = fra.me.REG[4];
+  /* ./parser//parser_prod.nit:5868 */
+  REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+    nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 5868);
+  }
+  CALL_parser_prod___ANode___parent__eq(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  init_table[itpos198] = 1;
+  return;
+}
+  void OC_parser_prod___ABraAssignExpr___init_abraassignexpr_1(struct stack_frame_t *closctx, val_t p0, struct stack_frame_t *closctx_param, fun_t clos_fun0){
+    struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+    val_t REGB0;
+    fun_t CREG[1];
+    val_t tmp;
+    /* ./parser//parser_prod.nit:5860 */
+    fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+    fra.me.file = LOCATE_parser_prod;
+    fra.me.line = 0;
+    fra.me.meth = LOCATE_parser_prod___ABraAssignExpr___init_abraassignexpr;
+    fra.me.has_broke = 0;
+    fra.me.REG_size = 2;
+    fra.me.REG[0] = NIT_NULL;
+    fra.me.REG[1] = NIT_NULL;
+    fra.me.closure_ctx = closctx_param;
+    fra.me.closure_funs = CREG;
+    fra.me.REG[0] = p0;
+    CREG[0] = clos_fun0;
+    /* ./parser//parser_prod.nit:5861 */
+    REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[0], COLOR_AExpr, ID_AExpr)) /*cast AExpr*/;
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      nit_abort("Assert failed", NULL, LOCATE_parser_prod, 5861);
+    }
+    /* ./parser//parser_prod.nit:5862 */
+    REGB0 = TAG_Bool(ATTR_parser_nodes___ABraFormExpr____n_args(closctx->REG[0])!=NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      nit_abort("Uninitialized attribute %s", "_n_args", LOCATE_parser_prod, 5862);
+    }
+    fra.me.REG[1] = ATTR_parser_nodes___ABraFormExpr____n_args(closctx->REG[0]);
+    CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+    /* ./parser//parser_prod.nit:5863 */
+    CALL_parser_prod___ANode___parent__eq(fra.me.REG[0])(fra.me.REG[0], closctx->REG[0]);
+    stack_frame_head = fra.me.prev;
+    return;
+  }
+void parser_prod___ABraAssignExpr___replace_child(val_t p0, val_t p1, val_t p2){
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t REGB2;
+  val_t REGB3;
+  val_t REGB4;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 5871;
+  fra.me.meth = LOCATE_parser_prod___ABraAssignExpr___replace_child;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  /* ./parser//parser_prod.nit:5873 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ASendExpr____n_expr(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser_prod, 5873);
+  }
+  fra.me.REG[3] = ATTR_parser_nodes___ASendExpr____n_expr(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+    REGB0 = REGB1;
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:5874 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:5875 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 5875);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:5876 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_AExpr, ID_AExpr)) /*cast AExpr*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 5876);
+      }
+      /* ./parser//parser_prod.nit:5877 */
+      ATTR_parser_nodes___ASendExpr____n_expr(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:5879 */
+      nit_abort("Aborted", NULL, LOCATE_parser_prod, 5879);
+    }
+    /* ./parser//parser_prod.nit:5881 */
+    goto label1;
+  }
+  /* ./parser//parser_prod.nit:5883 */
+  REGB0 = TAG_Int(0);
+  REGB1 = TAG_Bool(ATTR_parser_nodes___ABraFormExpr____n_args(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB1)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_args", LOCATE_parser_prod, 5883);
+  }
+  fra.me.REG[3] = ATTR_parser_nodes___ABraFormExpr____n_args(fra.me.REG[0]);
+  REGB1 = CALL_abstract_collection___Collection___length(fra.me.REG[3])(fra.me.REG[3]);
+  /* ./../lib/standard//kernel.nit:332 */
+  while(1) {
+    /* ./../lib/standard//kernel.nit:212 */
+    REGB2 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
+    /* ./../lib/standard//kernel.nit:332 */
+    if (UNTAG_Bool(REGB2)) {
+      /* ./parser//parser_prod.nit:5883 */
+      REGB2 = REGB0;
+      /* ./parser//parser_prod.nit:5884 */
+      REGB3 = TAG_Bool(ATTR_parser_nodes___ABraFormExpr____n_args(fra.me.REG[0])!=NIT_NULL);
+      if (UNTAG_Bool(REGB3)) {
+      } else {
+        nit_abort("Uninitialized attribute %s", "_n_args", LOCATE_parser_prod, 5884);
+      }
+      fra.me.REG[3] = ATTR_parser_nodes___ABraFormExpr____n_args(fra.me.REG[0]);
+      fra.me.REG[3] = CALL_abstract_collection___MapRead_____bra(fra.me.REG[3])(fra.me.REG[3], REGB2);
+      REGB3 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
+      if (UNTAG_Bool(REGB3)) {
+      } else {
+        REGB4 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+        if (UNTAG_Bool(REGB4)) {
+          REGB4 = TAG_Bool(false);
+          REGB3 = REGB4;
+        } else {
+          REGB4 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+          REGB3 = REGB4;
+        }
+      }
+      if (UNTAG_Bool(REGB3)) {
+        /* ./parser//parser_prod.nit:5885 */
+        REGB3 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+        if (UNTAG_Bool(REGB3)) {
+        } else {
+          REGB4 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+          if (UNTAG_Bool(REGB4)) {
+            REGB4 = TAG_Bool(false);
+            REGB3 = REGB4;
+          } else {
+            REGB4 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+            REGB3 = REGB4;
+          }
+        }
+        REGB3 = TAG_Bool(!UNTAG_Bool(REGB3));
+        if (UNTAG_Bool(REGB3)) {
+          /* ./parser//parser_prod.nit:5886 */
+          REGB3 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_AExpr, ID_AExpr)) /*cast AExpr*/;
+          if (UNTAG_Bool(REGB3)) {
+          } else {
+            nit_abort("Assert failed", NULL, LOCATE_parser_prod, 5886);
+          }
+          /* ./parser//parser_prod.nit:5887 */
+          REGB3 = TAG_Bool(ATTR_parser_nodes___ABraFormExpr____n_args(fra.me.REG[0])!=NIT_NULL);
+          if (UNTAG_Bool(REGB3)) {
+          } else {
+            nit_abort("Uninitialized attribute %s", "_n_args", LOCATE_parser_prod, 5887);
+          }
+          fra.me.REG[3] = ATTR_parser_nodes___ABraFormExpr____n_args(fra.me.REG[0]);
+          CALL_abstract_collection___Map_____braeq(fra.me.REG[3])(fra.me.REG[3], REGB2, fra.me.REG[2]);
+          /* ./parser//parser_prod.nit:5888 */
+          REGB3 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+          if (UNTAG_Bool(REGB3)) {
+            nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 5888);
+          }
+          CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+        } else {
+          /* ./parser//parser_prod.nit:5890 */
+          REGB3 = TAG_Bool(ATTR_parser_nodes___ABraFormExpr____n_args(fra.me.REG[0])!=NIT_NULL);
+          if (UNTAG_Bool(REGB3)) {
+          } else {
+            nit_abort("Uninitialized attribute %s", "_n_args", LOCATE_parser_prod, 5890);
+          }
+          fra.me.REG[3] = ATTR_parser_nodes___ABraFormExpr____n_args(fra.me.REG[0]);
+          CALL_abstract_collection___Map___remove_at(fra.me.REG[3])(fra.me.REG[3], REGB2);
+        }
+        /* ./parser//parser_prod.nit:5892 */
+        goto label1;
+      }
+      /* ./../lib/standard//kernel.nit:334 */
+      REGB2 = TAG_Int(1);
+      /* ./../lib/standard//kernel.nit:215 */
+      REGB2 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB2));
+      /* ./../lib/standard//kernel.nit:334 */
+      REGB0 = REGB2;
+    } else {
+      /* ./../lib/standard//kernel.nit:332 */
+      goto label2;
+    }
+  }
+  label2: while(0);
+  /* ./parser//parser_prod.nit:5895 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AAssignFormExpr____n_assign(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_assign", LOCATE_parser_prod, 5895);
+  }
+  fra.me.REG[3] = ATTR_parser_nodes___AAssignFormExpr____n_assign(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+    REGB0 = REGB1;
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:5896 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:5897 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 5897);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:5898 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_TAssign, ID_TAssign)) /*cast TAssign*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 5898);
+      }
+      /* ./parser//parser_prod.nit:5899 */
+      ATTR_parser_nodes___AAssignFormExpr____n_assign(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:5901 */
+      nit_abort("Aborted", NULL, LOCATE_parser_prod, 5901);
+    }
+    /* ./parser//parser_prod.nit:5903 */
+    goto label1;
+  }
+  /* ./parser//parser_prod.nit:5905 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AAssignFormExpr____n_value(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_value", LOCATE_parser_prod, 5905);
+  }
+  fra.me.REG[3] = ATTR_parser_nodes___AAssignFormExpr____n_value(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+    REGB0 = REGB1;
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:5906 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:5907 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 5907);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:5908 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_AExpr, ID_AExpr)) /*cast AExpr*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 5908);
+      }
+      /* ./parser//parser_prod.nit:5909 */
+      ATTR_parser_nodes___AAssignFormExpr____n_value(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:5911 */
+      nit_abort("Aborted", NULL, LOCATE_parser_prod, 5911);
+    }
+    /* ./parser//parser_prod.nit:5913 */
+    goto label1;
+  }
+  label1: while(0);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser_prod___ABraAssignExpr___visit_all(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 5917;
+  fra.me.meth = LOCATE_parser_prod___ABraAssignExpr___visit_all;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:5919 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ASendExpr____n_expr(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser_prod, 5919);
+  }
+  fra.me.REG[2] = ATTR_parser_nodes___ASendExpr____n_expr(fra.me.REG[0]);
+  CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser_prod.nit:5920 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ABraFormExpr____n_args(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_args", LOCATE_parser_prod, 5920);
+  }
+  fra.me.REG[2] = ATTR_parser_nodes___ABraFormExpr____n_args(fra.me.REG[0]);
+  CALL_abstract_collection___Collection___iterate(fra.me.REG[2])(fra.me.REG[2], (&(fra.me)), ((fun_t)OC_parser_prod___ABraAssignExpr___visit_all_1));
+  /* ./parser//parser_prod.nit:5923 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AAssignFormExpr____n_assign(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_assign", LOCATE_parser_prod, 5923);
+  }
+  fra.me.REG[2] = ATTR_parser_nodes___AAssignFormExpr____n_assign(fra.me.REG[0]);
+  CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser_prod.nit:5924 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AAssignFormExpr____n_value(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_value", LOCATE_parser_prod, 5924);
+  }
+  fra.me.REG[0] = ATTR_parser_nodes___AAssignFormExpr____n_value(fra.me.REG[0]);
+  CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+  void OC_parser_prod___ABraAssignExpr___visit_all_1(struct stack_frame_t *closctx, val_t p0, struct stack_frame_t *closctx_param, fun_t clos_fun0){
+    struct {struct stack_frame_t me;} fra;
+    fun_t CREG[1];
+    val_t tmp;
+    fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+    fra.me.file = LOCATE_parser_prod;
+    fra.me.line = 0;
+    fra.me.meth = LOCATE_parser_prod___ABraAssignExpr___visit_all;
+    fra.me.has_broke = 0;
+    fra.me.REG_size = 1;
+    fra.me.REG[0] = NIT_NULL;
+    fra.me.closure_ctx = closctx_param;
+    fra.me.closure_funs = CREG;
+    fra.me.REG[0] = p0;
+    CREG[0] = clos_fun0;
+    /* ./parser//parser_prod.nit:5921 */
+    CALL_parser_prod___Visitor___enter_visit(closctx->REG[1])(closctx->REG[1], fra.me.REG[0]);
+    stack_frame_head = fra.me.prev;
+    return;
+  }
+void parser_prod___ABraReassignExpr___empty_init(val_t p0, int* init_table){
+  int itpos199 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ABraReassignExpr].i;
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  if (init_table[itpos199]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 5928;
+  fra.me.meth = LOCATE_parser_prod___ABraReassignExpr___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos199] = 1;
+  return;
+}
+void parser_prod___ABraReassignExpr___init_abrareassignexpr(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4, int* init_table){
+  int itpos200 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ABraReassignExpr].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos200]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 5930;
+  fra.me.meth = LOCATE_parser_prod___ABraReassignExpr___init_abrareassignexpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  fra.me.REG[3] = p3;
+  fra.me.REG[4] = p4;
+  /* ./parser//parser_prod.nit:5937 */
+  CALL_parser_prod___ABraReassignExpr___empty_init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  /* ./parser//parser_prod.nit:5938 */
+  REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Cast failed", NULL, LOCATE_parser_prod, 5938);
+  }
+  ATTR_parser_nodes___ASendExpr____n_expr(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./parser//parser_prod.nit:5939 */
+  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+    nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 5939);
+  }
+  CALL_parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  CALL_abstract_collection___Collection___iterate(fra.me.REG[2])(fra.me.REG[2], (&(fra.me)), ((fun_t)OC_parser_prod___ABraReassignExpr___init_abrareassignexpr_1));
+  /* ./parser//parser_prod.nit:5945 */
+  REGB0 = TAG_Bool(fra.me.REG[3]!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Cast failed", NULL, LOCATE_parser_prod, 5945);
+  }
+  ATTR_parser_nodes___AReassignFormExpr____n_assign_op(fra.me.REG[0]) = fra.me.REG[3];
+  /* ./parser//parser_prod.nit:5946 */
+  REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+    nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 5946);
+  }
+  CALL_parser_prod___ANode___parent__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[0]);
+  /* ./parser//parser_prod.nit:5947 */
+  REGB0 = TAG_Bool(fra.me.REG[4]!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Cast failed", NULL, LOCATE_parser_prod, 5947);
+  }
+  ATTR_parser_nodes___AReassignFormExpr____n_value(fra.me.REG[0]) = fra.me.REG[4];
+  /* ./parser//parser_prod.nit:5948 */
+  REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+    nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 5948);
+  }
+  CALL_parser_prod___ANode___parent__eq(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  init_table[itpos200] = 1;
+  return;
+}
+  void OC_parser_prod___ABraReassignExpr___init_abrareassignexpr_1(struct stack_frame_t *closctx, val_t p0, struct stack_frame_t *closctx_param, fun_t clos_fun0){
+    struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+    val_t REGB0;
+    fun_t CREG[1];
+    val_t tmp;
+    /* ./parser//parser_prod.nit:5940 */
+    fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+    fra.me.file = LOCATE_parser_prod;
+    fra.me.line = 0;
+    fra.me.meth = LOCATE_parser_prod___ABraReassignExpr___init_abrareassignexpr;
+    fra.me.has_broke = 0;
+    fra.me.REG_size = 2;
+    fra.me.REG[0] = NIT_NULL;
+    fra.me.REG[1] = NIT_NULL;
+    fra.me.closure_ctx = closctx_param;
+    fra.me.closure_funs = CREG;
+    fra.me.REG[0] = p0;
+    CREG[0] = clos_fun0;
+    /* ./parser//parser_prod.nit:5941 */
+    REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[0], COLOR_AExpr, ID_AExpr)) /*cast AExpr*/;
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      nit_abort("Assert failed", NULL, LOCATE_parser_prod, 5941);
+    }
+    /* ./parser//parser_prod.nit:5942 */
+    REGB0 = TAG_Bool(ATTR_parser_nodes___ABraFormExpr____n_args(closctx->REG[0])!=NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      nit_abort("Uninitialized attribute %s", "_n_args", LOCATE_parser_prod, 5942);
+    }
+    fra.me.REG[1] = ATTR_parser_nodes___ABraFormExpr____n_args(closctx->REG[0]);
+    CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+    /* ./parser//parser_prod.nit:5943 */
+    CALL_parser_prod___ANode___parent__eq(fra.me.REG[0])(fra.me.REG[0], closctx->REG[0]);
+    stack_frame_head = fra.me.prev;
+    return;
+  }
+void parser_prod___ABraReassignExpr___replace_child(val_t p0, val_t p1, val_t p2){
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t REGB2;
+  val_t REGB3;
+  val_t REGB4;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 5951;
+  fra.me.meth = LOCATE_parser_prod___ABraReassignExpr___replace_child;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  /* ./parser//parser_prod.nit:5953 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ASendExpr____n_expr(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser_prod, 5953);
+  }
+  fra.me.REG[3] = ATTR_parser_nodes___ASendExpr____n_expr(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+    REGB0 = REGB1;
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:5954 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:5955 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 5955);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:5956 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_AExpr, ID_AExpr)) /*cast AExpr*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 5956);
+      }
+      /* ./parser//parser_prod.nit:5957 */
+      ATTR_parser_nodes___ASendExpr____n_expr(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:5959 */
+      nit_abort("Aborted", NULL, LOCATE_parser_prod, 5959);
+    }
+    /* ./parser//parser_prod.nit:5961 */
+    goto label1;
+  }
+  /* ./parser//parser_prod.nit:5963 */
+  REGB0 = TAG_Int(0);
+  REGB1 = TAG_Bool(ATTR_parser_nodes___ABraFormExpr____n_args(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB1)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_args", LOCATE_parser_prod, 5963);
+  }
+  fra.me.REG[3] = ATTR_parser_nodes___ABraFormExpr____n_args(fra.me.REG[0]);
+  REGB1 = CALL_abstract_collection___Collection___length(fra.me.REG[3])(fra.me.REG[3]);
+  /* ./../lib/standard//kernel.nit:332 */
+  while(1) {
+    /* ./../lib/standard//kernel.nit:212 */
+    REGB2 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
+    /* ./../lib/standard//kernel.nit:332 */
+    if (UNTAG_Bool(REGB2)) {
+      /* ./parser//parser_prod.nit:5963 */
+      REGB2 = REGB0;
+      /* ./parser//parser_prod.nit:5964 */
+      REGB3 = TAG_Bool(ATTR_parser_nodes___ABraFormExpr____n_args(fra.me.REG[0])!=NIT_NULL);
+      if (UNTAG_Bool(REGB3)) {
+      } else {
+        nit_abort("Uninitialized attribute %s", "_n_args", LOCATE_parser_prod, 5964);
+      }
+      fra.me.REG[3] = ATTR_parser_nodes___ABraFormExpr____n_args(fra.me.REG[0]);
+      fra.me.REG[3] = CALL_abstract_collection___MapRead_____bra(fra.me.REG[3])(fra.me.REG[3], REGB2);
+      REGB3 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
+      if (UNTAG_Bool(REGB3)) {
+      } else {
+        REGB4 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+        if (UNTAG_Bool(REGB4)) {
+          REGB4 = TAG_Bool(false);
+          REGB3 = REGB4;
+        } else {
+          REGB4 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+          REGB3 = REGB4;
+        }
+      }
+      if (UNTAG_Bool(REGB3)) {
+        /* ./parser//parser_prod.nit:5965 */
+        REGB3 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+        if (UNTAG_Bool(REGB3)) {
+        } else {
+          REGB4 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+          if (UNTAG_Bool(REGB4)) {
+            REGB4 = TAG_Bool(false);
+            REGB3 = REGB4;
+          } else {
+            REGB4 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+            REGB3 = REGB4;
+          }
+        }
+        REGB3 = TAG_Bool(!UNTAG_Bool(REGB3));
+        if (UNTAG_Bool(REGB3)) {
+          /* ./parser//parser_prod.nit:5966 */
+          REGB3 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_AExpr, ID_AExpr)) /*cast AExpr*/;
+          if (UNTAG_Bool(REGB3)) {
+          } else {
+            nit_abort("Assert failed", NULL, LOCATE_parser_prod, 5966);
+          }
+          /* ./parser//parser_prod.nit:5967 */
+          REGB3 = TAG_Bool(ATTR_parser_nodes___ABraFormExpr____n_args(fra.me.REG[0])!=NIT_NULL);
+          if (UNTAG_Bool(REGB3)) {
+          } else {
+            nit_abort("Uninitialized attribute %s", "_n_args", LOCATE_parser_prod, 5967);
+          }
+          fra.me.REG[3] = ATTR_parser_nodes___ABraFormExpr____n_args(fra.me.REG[0]);
+          CALL_abstract_collection___Map_____braeq(fra.me.REG[3])(fra.me.REG[3], REGB2, fra.me.REG[2]);
+          /* ./parser//parser_prod.nit:5968 */
+          REGB3 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+          if (UNTAG_Bool(REGB3)) {
+            nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 5968);
+          }
+          CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+        } else {
+          /* ./parser//parser_prod.nit:5970 */
+          REGB3 = TAG_Bool(ATTR_parser_nodes___ABraFormExpr____n_args(fra.me.REG[0])!=NIT_NULL);
+          if (UNTAG_Bool(REGB3)) {
+          } else {
+            nit_abort("Uninitialized attribute %s", "_n_args", LOCATE_parser_prod, 5970);
+          }
+          fra.me.REG[3] = ATTR_parser_nodes___ABraFormExpr____n_args(fra.me.REG[0]);
+          CALL_abstract_collection___Map___remove_at(fra.me.REG[3])(fra.me.REG[3], REGB2);
+        }
+        /* ./parser//parser_prod.nit:5972 */
+        goto label1;
+      }
+      /* ./../lib/standard//kernel.nit:334 */
+      REGB2 = TAG_Int(1);
+      /* ./../lib/standard//kernel.nit:215 */
+      REGB2 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB2));
+      /* ./../lib/standard//kernel.nit:334 */
+      REGB0 = REGB2;
+    } else {
+      /* ./../lib/standard//kernel.nit:332 */
+      goto label2;
+    }
+  }
+  label2: while(0);
+  /* ./parser//parser_prod.nit:5975 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AReassignFormExpr____n_assign_op(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_assign_op", LOCATE_parser_prod, 5975);
+  }
+  fra.me.REG[3] = ATTR_parser_nodes___AReassignFormExpr____n_assign_op(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+    REGB0 = REGB1;
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:5976 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:5977 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 5977);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:5978 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_AAssignOp, ID_AAssignOp)) /*cast AAssignOp*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 5978);
+      }
+      /* ./parser//parser_prod.nit:5979 */
+      ATTR_parser_nodes___AReassignFormExpr____n_assign_op(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:5981 */
+      nit_abort("Aborted", NULL, LOCATE_parser_prod, 5981);
+    }
+    /* ./parser//parser_prod.nit:5983 */
+    goto label1;
+  }
+  /* ./parser//parser_prod.nit:5985 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AReassignFormExpr____n_value(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_value", LOCATE_parser_prod, 5985);
+  }
+  fra.me.REG[3] = ATTR_parser_nodes___AReassignFormExpr____n_value(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+    REGB0 = REGB1;
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:5986 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:5987 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 5987);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:5988 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_AExpr, ID_AExpr)) /*cast AExpr*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 5988);
+      }
+      /* ./parser//parser_prod.nit:5989 */
+      ATTR_parser_nodes___AReassignFormExpr____n_value(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:5991 */
+      nit_abort("Aborted", NULL, LOCATE_parser_prod, 5991);
+    }
+    /* ./parser//parser_prod.nit:5993 */
+    goto label1;
+  }
+  label1: while(0);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser_prod___ABraReassignExpr___visit_all(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 5997;
+  fra.me.meth = LOCATE_parser_prod___ABraReassignExpr___visit_all;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:5999 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ASendExpr____n_expr(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser_prod, 5999);
+  }
+  fra.me.REG[2] = ATTR_parser_nodes___ASendExpr____n_expr(fra.me.REG[0]);
+  CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser_prod.nit:6000 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ABraFormExpr____n_args(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_args", LOCATE_parser_prod, 6000);
+  }
+  fra.me.REG[2] = ATTR_parser_nodes___ABraFormExpr____n_args(fra.me.REG[0]);
+  CALL_abstract_collection___Collection___iterate(fra.me.REG[2])(fra.me.REG[2], (&(fra.me)), ((fun_t)OC_parser_prod___ABraReassignExpr___visit_all_1));
+  /* ./parser//parser_prod.nit:6003 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AReassignFormExpr____n_assign_op(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_assign_op", LOCATE_parser_prod, 6003);
+  }
+  fra.me.REG[2] = ATTR_parser_nodes___AReassignFormExpr____n_assign_op(fra.me.REG[0]);
+  CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser_prod.nit:6004 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AReassignFormExpr____n_value(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_value", LOCATE_parser_prod, 6004);
+  }
+  fra.me.REG[0] = ATTR_parser_nodes___AReassignFormExpr____n_value(fra.me.REG[0]);
+  CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+  void OC_parser_prod___ABraReassignExpr___visit_all_1(struct stack_frame_t *closctx, val_t p0, struct stack_frame_t *closctx_param, fun_t clos_fun0){
+    struct {struct stack_frame_t me;} fra;
+    fun_t CREG[1];
+    val_t tmp;
+    fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+    fra.me.file = LOCATE_parser_prod;
+    fra.me.line = 0;
+    fra.me.meth = LOCATE_parser_prod___ABraReassignExpr___visit_all;
+    fra.me.has_broke = 0;
+    fra.me.REG_size = 1;
+    fra.me.REG[0] = NIT_NULL;
+    fra.me.closure_ctx = closctx_param;
+    fra.me.closure_funs = CREG;
+    fra.me.REG[0] = p0;
+    CREG[0] = clos_fun0;
+    /* ./parser//parser_prod.nit:6001 */
+    CALL_parser_prod___Visitor___enter_visit(closctx->REG[1])(closctx->REG[1], fra.me.REG[0]);
+    stack_frame_head = fra.me.prev;
+    return;
+  }
+void parser_prod___AClosureCallExpr___empty_init(val_t p0, int* init_table){
+  int itpos201 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_AClosureCallExpr].i;
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  if (init_table[itpos201]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 6008;
+  fra.me.meth = LOCATE_parser_prod___AClosureCallExpr___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos201] = 1;
+  return;
+}
+void parser_prod___AClosureCallExpr___init_aclosurecallexpr(val_t p0, val_t p1, val_t p2, val_t p3, int* init_table){
+  int itpos202 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_AClosureCallExpr].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos202]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 6010;
+  fra.me.meth = LOCATE_parser_prod___AClosureCallExpr___init_aclosurecallexpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  fra.me.REG[3] = p3;
+  /* ./parser//parser_prod.nit:6016 */
+  CALL_parser_prod___AClosureCallExpr___empty_init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  /* ./parser//parser_prod.nit:6017 */
+  REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Cast failed", NULL, LOCATE_parser_prod, 6017);
+  }
+  ATTR_parser_nodes___AClosureCallExpr____n_id(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./parser//parser_prod.nit:6018 */
+  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+    nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 6018);
+  }
+  CALL_parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  CALL_abstract_collection___Collection___iterate(fra.me.REG[2])(fra.me.REG[2], (&(fra.me)), ((fun_t)OC_parser_prod___AClosureCallExpr___init_aclosurecallexpr_1));
+  CALL_abstract_collection___Collection___iterate(fra.me.REG[3])(fra.me.REG[3], (&(fra.me)), ((fun_t)OC_parser_prod___AClosureCallExpr___init_aclosurecallexpr_2));
+  stack_frame_head = fra.me.prev;
+  init_table[itpos202] = 1;
+  return;
+}
+  void OC_parser_prod___AClosureCallExpr___init_aclosurecallexpr_1(struct stack_frame_t *closctx, val_t p0, struct stack_frame_t *closctx_param, fun_t clos_fun0){
+    struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+    val_t REGB0;
+    fun_t CREG[1];
+    val_t tmp;
+    /* ./parser//parser_prod.nit:6019 */
+    fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+    fra.me.file = LOCATE_parser_prod;
+    fra.me.line = 0;
+    fra.me.meth = LOCATE_parser_prod___AClosureCallExpr___init_aclosurecallexpr;
+    fra.me.has_broke = 0;
+    fra.me.REG_size = 2;
+    fra.me.REG[0] = NIT_NULL;
+    fra.me.REG[1] = NIT_NULL;
+    fra.me.closure_ctx = closctx_param;
+    fra.me.closure_funs = CREG;
+    fra.me.REG[0] = p0;
+    CREG[0] = clos_fun0;
+    /* ./parser//parser_prod.nit:6020 */
+    REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[0], COLOR_AExpr, ID_AExpr)) /*cast AExpr*/;
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      nit_abort("Assert failed", NULL, LOCATE_parser_prod, 6020);
+    }
+    /* ./parser//parser_prod.nit:6021 */
+    REGB0 = TAG_Bool(ATTR_parser_nodes___AClosureCallExpr____n_args(closctx->REG[0])!=NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      nit_abort("Uninitialized attribute %s", "_n_args", LOCATE_parser_prod, 6021);
+    }
+    fra.me.REG[1] = ATTR_parser_nodes___AClosureCallExpr____n_args(closctx->REG[0]);
+    CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+    /* ./parser//parser_prod.nit:6022 */
+    CALL_parser_prod___ANode___parent__eq(fra.me.REG[0])(fra.me.REG[0], closctx->REG[0]);
+    stack_frame_head = fra.me.prev;
+    return;
+  }
+  void OC_parser_prod___AClosureCallExpr___init_aclosurecallexpr_2(struct stack_frame_t *closctx, val_t p0, struct stack_frame_t *closctx_param, fun_t clos_fun0){
+    struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+    val_t REGB0;
+    fun_t CREG[1];
+    val_t tmp;
+    /* ./parser//parser_prod.nit:6024 */
+    fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+    fra.me.file = LOCATE_parser_prod;
+    fra.me.line = 0;
+    fra.me.meth = LOCATE_parser_prod___AClosureCallExpr___init_aclosurecallexpr;
+    fra.me.has_broke = 0;
+    fra.me.REG_size = 2;
+    fra.me.REG[0] = NIT_NULL;
+    fra.me.REG[1] = NIT_NULL;
+    fra.me.closure_ctx = closctx_param;
+    fra.me.closure_funs = CREG;
+    fra.me.REG[0] = p0;
+    CREG[0] = clos_fun0;
+    /* ./parser//parser_prod.nit:6025 */
+    REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[0], COLOR_AClosureDef, ID_AClosureDef)) /*cast AClosureDef*/;
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      nit_abort("Assert failed", NULL, LOCATE_parser_prod, 6025);
+    }
+    /* ./parser//parser_prod.nit:6026 */
+    REGB0 = TAG_Bool(ATTR_parser_nodes___AClosureCallExpr____n_closure_defs(closctx->REG[0])!=NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      nit_abort("Uninitialized attribute %s", "_n_closure_defs", LOCATE_parser_prod, 6026);
+    }
+    fra.me.REG[1] = ATTR_parser_nodes___AClosureCallExpr____n_closure_defs(closctx->REG[0]);
+    CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+    /* ./parser//parser_prod.nit:6027 */
+    CALL_parser_prod___ANode___parent__eq(fra.me.REG[0])(fra.me.REG[0], closctx->REG[0]);
+    stack_frame_head = fra.me.prev;
+    return;
+  }
+void parser_prod___AClosureCallExpr___replace_child(val_t p0, val_t p1, val_t p2){
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t REGB2;
+  val_t REGB3;
+  val_t REGB4;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 6031;
+  fra.me.meth = LOCATE_parser_prod___AClosureCallExpr___replace_child;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  /* ./parser//parser_prod.nit:6033 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AClosureCallExpr____n_id(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_id", LOCATE_parser_prod, 6033);
+  }
+  fra.me.REG[3] = ATTR_parser_nodes___AClosureCallExpr____n_id(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+    REGB0 = REGB1;
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:6034 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:6035 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 6035);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:6036 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_TId, ID_TId)) /*cast TId*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 6036);
+      }
+      /* ./parser//parser_prod.nit:6037 */
+      ATTR_parser_nodes___AClosureCallExpr____n_id(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:6039 */
+      nit_abort("Aborted", NULL, LOCATE_parser_prod, 6039);
+    }
+    /* ./parser//parser_prod.nit:6041 */
+    goto label1;
+  }
+  /* ./parser//parser_prod.nit:6043 */
+  REGB0 = TAG_Int(0);
+  REGB1 = TAG_Bool(ATTR_parser_nodes___AClosureCallExpr____n_args(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB1)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_args", LOCATE_parser_prod, 6043);
+  }
+  fra.me.REG[3] = ATTR_parser_nodes___AClosureCallExpr____n_args(fra.me.REG[0]);
+  REGB1 = CALL_abstract_collection___Collection___length(fra.me.REG[3])(fra.me.REG[3]);
+  /* ./../lib/standard//kernel.nit:332 */
+  while(1) {
+    /* ./../lib/standard//kernel.nit:212 */
+    REGB2 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
+    /* ./../lib/standard//kernel.nit:332 */
+    if (UNTAG_Bool(REGB2)) {
+      /* ./parser//parser_prod.nit:6043 */
+      REGB2 = REGB0;
+      /* ./parser//parser_prod.nit:6044 */
+      REGB3 = TAG_Bool(ATTR_parser_nodes___AClosureCallExpr____n_args(fra.me.REG[0])!=NIT_NULL);
+      if (UNTAG_Bool(REGB3)) {
+      } else {
+        nit_abort("Uninitialized attribute %s", "_n_args", LOCATE_parser_prod, 6044);
+      }
+      fra.me.REG[3] = ATTR_parser_nodes___AClosureCallExpr____n_args(fra.me.REG[0]);
+      fra.me.REG[3] = CALL_abstract_collection___MapRead_____bra(fra.me.REG[3])(fra.me.REG[3], REGB2);
+      REGB3 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
+      if (UNTAG_Bool(REGB3)) {
+      } else {
+        REGB4 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+        if (UNTAG_Bool(REGB4)) {
+          REGB4 = TAG_Bool(false);
+          REGB3 = REGB4;
+        } else {
+          REGB4 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+          REGB3 = REGB4;
+        }
+      }
+      if (UNTAG_Bool(REGB3)) {
+        /* ./parser//parser_prod.nit:6045 */
+        REGB3 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+        if (UNTAG_Bool(REGB3)) {
+        } else {
+          REGB4 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+          if (UNTAG_Bool(REGB4)) {
+            REGB4 = TAG_Bool(false);
+            REGB3 = REGB4;
+          } else {
+            REGB4 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+            REGB3 = REGB4;
+          }
+        }
+        REGB3 = TAG_Bool(!UNTAG_Bool(REGB3));
+        if (UNTAG_Bool(REGB3)) {
+          /* ./parser//parser_prod.nit:6046 */
+          REGB3 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_AExpr, ID_AExpr)) /*cast AExpr*/;
+          if (UNTAG_Bool(REGB3)) {
+          } else {
+            nit_abort("Assert failed", NULL, LOCATE_parser_prod, 6046);
+          }
+          /* ./parser//parser_prod.nit:6047 */
+          REGB3 = TAG_Bool(ATTR_parser_nodes___AClosureCallExpr____n_args(fra.me.REG[0])!=NIT_NULL);
+          if (UNTAG_Bool(REGB3)) {
+          } else {
+            nit_abort("Uninitialized attribute %s", "_n_args", LOCATE_parser_prod, 6047);
+          }
+          fra.me.REG[3] = ATTR_parser_nodes___AClosureCallExpr____n_args(fra.me.REG[0]);
+          CALL_abstract_collection___Map_____braeq(fra.me.REG[3])(fra.me.REG[3], REGB2, fra.me.REG[2]);
+          /* ./parser//parser_prod.nit:6048 */
+          REGB3 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+          if (UNTAG_Bool(REGB3)) {
+            nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 6048);
+          }
+          CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+        } else {
+          /* ./parser//parser_prod.nit:6050 */
+          REGB3 = TAG_Bool(ATTR_parser_nodes___AClosureCallExpr____n_args(fra.me.REG[0])!=NIT_NULL);
+          if (UNTAG_Bool(REGB3)) {
+          } else {
+            nit_abort("Uninitialized attribute %s", "_n_args", LOCATE_parser_prod, 6050);
+          }
+          fra.me.REG[3] = ATTR_parser_nodes___AClosureCallExpr____n_args(fra.me.REG[0]);
+          CALL_abstract_collection___Map___remove_at(fra.me.REG[3])(fra.me.REG[3], REGB2);
+        }
+        /* ./parser//parser_prod.nit:6052 */
+        goto label1;
+      }
+      /* ./../lib/standard//kernel.nit:334 */
+      REGB2 = TAG_Int(1);
+      /* ./../lib/standard//kernel.nit:215 */
+      REGB2 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB2));
+      /* ./../lib/standard//kernel.nit:334 */
+      REGB0 = REGB2;
+    } else {
+      /* ./../lib/standard//kernel.nit:332 */
+      goto label2;
+    }
+  }
+  label2: while(0);
+  /* ./parser//parser_prod.nit:6055 */
+  REGB0 = TAG_Int(0);
+  REGB1 = TAG_Bool(ATTR_parser_nodes___AClosureCallExpr____n_closure_defs(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB1)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_closure_defs", LOCATE_parser_prod, 6055);
+  }
+  fra.me.REG[3] = ATTR_parser_nodes___AClosureCallExpr____n_closure_defs(fra.me.REG[0]);
+  REGB1 = CALL_abstract_collection___Collection___length(fra.me.REG[3])(fra.me.REG[3]);
+  /* ./../lib/standard//kernel.nit:332 */
+  while(1) {
+    /* ./../lib/standard//kernel.nit:212 */
+    REGB2 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
+    /* ./../lib/standard//kernel.nit:332 */
+    if (UNTAG_Bool(REGB2)) {
+      /* ./parser//parser_prod.nit:6055 */
+      REGB2 = REGB0;
+      /* ./parser//parser_prod.nit:6056 */
+      REGB3 = TAG_Bool(ATTR_parser_nodes___AClosureCallExpr____n_closure_defs(fra.me.REG[0])!=NIT_NULL);
+      if (UNTAG_Bool(REGB3)) {
+      } else {
+        nit_abort("Uninitialized attribute %s", "_n_closure_defs", LOCATE_parser_prod, 6056);
+      }
+      fra.me.REG[3] = ATTR_parser_nodes___AClosureCallExpr____n_closure_defs(fra.me.REG[0]);
+      fra.me.REG[3] = CALL_abstract_collection___MapRead_____bra(fra.me.REG[3])(fra.me.REG[3], REGB2);
+      REGB3 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
+      if (UNTAG_Bool(REGB3)) {
+      } else {
+        REGB4 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+        if (UNTAG_Bool(REGB4)) {
+          REGB4 = TAG_Bool(false);
+          REGB3 = REGB4;
+        } else {
+          REGB4 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+          REGB3 = REGB4;
+        }
+      }
+      if (UNTAG_Bool(REGB3)) {
+        /* ./parser//parser_prod.nit:6057 */
+        REGB3 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+        if (UNTAG_Bool(REGB3)) {
+        } else {
+          REGB4 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+          if (UNTAG_Bool(REGB4)) {
+            REGB4 = TAG_Bool(false);
+            REGB3 = REGB4;
+          } else {
+            REGB4 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+            REGB3 = REGB4;
+          }
+        }
+        REGB3 = TAG_Bool(!UNTAG_Bool(REGB3));
+        if (UNTAG_Bool(REGB3)) {
+          /* ./parser//parser_prod.nit:6058 */
+          REGB3 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_AClosureDef, ID_AClosureDef)) /*cast AClosureDef*/;
+          if (UNTAG_Bool(REGB3)) {
+          } else {
+            nit_abort("Assert failed", NULL, LOCATE_parser_prod, 6058);
+          }
+          /* ./parser//parser_prod.nit:6059 */
+          REGB3 = TAG_Bool(ATTR_parser_nodes___AClosureCallExpr____n_closure_defs(fra.me.REG[0])!=NIT_NULL);
+          if (UNTAG_Bool(REGB3)) {
+          } else {
+            nit_abort("Uninitialized attribute %s", "_n_closure_defs", LOCATE_parser_prod, 6059);
+          }
+          fra.me.REG[3] = ATTR_parser_nodes___AClosureCallExpr____n_closure_defs(fra.me.REG[0]);
+          CALL_abstract_collection___Map_____braeq(fra.me.REG[3])(fra.me.REG[3], REGB2, fra.me.REG[2]);
+          /* ./parser//parser_prod.nit:6060 */
+          REGB3 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+          if (UNTAG_Bool(REGB3)) {
+            nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 6060);
+          }
+          CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+        } else {
+          /* ./parser//parser_prod.nit:6062 */
+          REGB3 = TAG_Bool(ATTR_parser_nodes___AClosureCallExpr____n_closure_defs(fra.me.REG[0])!=NIT_NULL);
+          if (UNTAG_Bool(REGB3)) {
+          } else {
+            nit_abort("Uninitialized attribute %s", "_n_closure_defs", LOCATE_parser_prod, 6062);
+          }
+          fra.me.REG[3] = ATTR_parser_nodes___AClosureCallExpr____n_closure_defs(fra.me.REG[0]);
+          CALL_abstract_collection___Map___remove_at(fra.me.REG[3])(fra.me.REG[3], REGB2);
+        }
+        /* ./parser//parser_prod.nit:6064 */
+        goto label1;
+      }
+      /* ./../lib/standard//kernel.nit:334 */
+      REGB2 = TAG_Int(1);
+      /* ./../lib/standard//kernel.nit:215 */
+      REGB2 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB2));
+      /* ./../lib/standard//kernel.nit:334 */
+      REGB0 = REGB2;
+    } else {
+      /* ./../lib/standard//kernel.nit:332 */
+      goto label3;
+    }
+  }
+  label3: while(0);
+  label1: while(0);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser_prod___AClosureCallExpr___visit_all(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 6069;
+  fra.me.meth = LOCATE_parser_prod___AClosureCallExpr___visit_all;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:6071 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AClosureCallExpr____n_id(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_id", LOCATE_parser_prod, 6071);
+  }
+  fra.me.REG[2] = ATTR_parser_nodes___AClosureCallExpr____n_id(fra.me.REG[0]);
+  CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser_prod.nit:6072 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AClosureCallExpr____n_args(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_args", LOCATE_parser_prod, 6072);
+  }
+  fra.me.REG[2] = ATTR_parser_nodes___AClosureCallExpr____n_args(fra.me.REG[0]);
+  CALL_abstract_collection___Collection___iterate(fra.me.REG[2])(fra.me.REG[2], (&(fra.me)), ((fun_t)OC_parser_prod___AClosureCallExpr___visit_all_1));
+  /* ./parser//parser_prod.nit:6075 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AClosureCallExpr____n_closure_defs(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_closure_defs", LOCATE_parser_prod, 6075);
+  }
+  fra.me.REG[0] = ATTR_parser_nodes___AClosureCallExpr____n_closure_defs(fra.me.REG[0]);
+  CALL_abstract_collection___Collection___iterate(fra.me.REG[0])(fra.me.REG[0], (&(fra.me)), ((fun_t)OC_parser_prod___AClosureCallExpr___visit_all_2));
+  stack_frame_head = fra.me.prev;
+  return;
+}
+  void OC_parser_prod___AClosureCallExpr___visit_all_1(struct stack_frame_t *closctx, val_t p0, struct stack_frame_t *closctx_param, fun_t clos_fun0){
+    struct {struct stack_frame_t me;} fra;
+    fun_t CREG[1];
+    val_t tmp;
+    fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+    fra.me.file = LOCATE_parser_prod;
+    fra.me.line = 0;
+    fra.me.meth = LOCATE_parser_prod___AClosureCallExpr___visit_all;
+    fra.me.has_broke = 0;
+    fra.me.REG_size = 1;
+    fra.me.REG[0] = NIT_NULL;
+    fra.me.closure_ctx = closctx_param;
+    fra.me.closure_funs = CREG;
+    fra.me.REG[0] = p0;
+    CREG[0] = clos_fun0;
+    /* ./parser//parser_prod.nit:6073 */
+    CALL_parser_prod___Visitor___enter_visit(closctx->REG[1])(closctx->REG[1], fra.me.REG[0]);
+    stack_frame_head = fra.me.prev;
+    return;
+  }
+  void OC_parser_prod___AClosureCallExpr___visit_all_2(struct stack_frame_t *closctx, val_t p0, struct stack_frame_t *closctx_param, fun_t clos_fun0){
+    struct {struct stack_frame_t me;} fra;
+    fun_t CREG[1];
+    val_t tmp;
+    fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+    fra.me.file = LOCATE_parser_prod;
+    fra.me.line = 0;
+    fra.me.meth = LOCATE_parser_prod___AClosureCallExpr___visit_all;
+    fra.me.has_broke = 0;
+    fra.me.REG_size = 1;
+    fra.me.REG[0] = NIT_NULL;
+    fra.me.closure_ctx = closctx_param;
+    fra.me.closure_funs = CREG;
+    fra.me.REG[0] = p0;
+    CREG[0] = clos_fun0;
+    /* ./parser//parser_prod.nit:6076 */
+    CALL_parser_prod___Visitor___enter_visit(closctx->REG[1])(closctx->REG[1], fra.me.REG[0]);
+    stack_frame_head = fra.me.prev;
+    return;
+  }
+void parser_prod___AVarExpr___empty_init(val_t p0, int* init_table){
+  int itpos203 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_AVarExpr].i;
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  if (init_table[itpos203]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 6081;
+  fra.me.meth = LOCATE_parser_prod___AVarExpr___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos203] = 1;
+  return;
+}
+void parser_prod___AVarExpr___init_avarexpr(val_t p0, val_t p1, int* init_table){
+  int itpos204 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_AVarExpr].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos204]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 6083;
+  fra.me.meth = LOCATE_parser_prod___AVarExpr___init_avarexpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:6087 */
+  CALL_parser_prod___AVarExpr___empty_init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  /* ./parser//parser_prod.nit:6088 */
+  REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Cast failed", NULL, LOCATE_parser_prod, 6088);
+  }
+  ATTR_parser_nodes___AVarFormExpr____n_id(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./parser//parser_prod.nit:6089 */
+  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+    nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 6089);
+  }
+  CALL_parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  init_table[itpos204] = 1;
+  return;
+}
+void parser_prod___AVarExpr___replace_child(val_t p0, val_t p1, val_t p2){
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 6092;
+  fra.me.meth = LOCATE_parser_prod___AVarExpr___replace_child;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  /* ./parser//parser_prod.nit:6094 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AVarFormExpr____n_id(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_id", LOCATE_parser_prod, 6094);
+  }
+  fra.me.REG[3] = ATTR_parser_nodes___AVarFormExpr____n_id(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+    REGB0 = REGB1;
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:6095 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:6096 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 6096);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:6097 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_TId, ID_TId)) /*cast TId*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 6097);
+      }
+      /* ./parser//parser_prod.nit:6098 */
+      ATTR_parser_nodes___AVarFormExpr____n_id(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:6100 */
+      nit_abort("Aborted", NULL, LOCATE_parser_prod, 6100);
+    }
+    /* ./parser//parser_prod.nit:6102 */
+    goto label1;
+  }
+  label1: while(0);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser_prod___AVarExpr___visit_all(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 6106;
+  fra.me.meth = LOCATE_parser_prod___AVarExpr___visit_all;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:6108 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AVarFormExpr____n_id(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_id", LOCATE_parser_prod, 6108);
+  }
+  fra.me.REG[0] = ATTR_parser_nodes___AVarFormExpr____n_id(fra.me.REG[0]);
+  CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser_prod___AVarAssignExpr___empty_init(val_t p0, int* init_table){
+  int itpos205 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_AVarAssignExpr].i;
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  if (init_table[itpos205]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 6112;
+  fra.me.meth = LOCATE_parser_prod___AVarAssignExpr___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos205] = 1;
+  return;
+}
+void parser_prod___AVarAssignExpr___init_avarassignexpr(val_t p0, val_t p1, val_t p2, val_t p3, int* init_table){
+  int itpos206 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_AVarAssignExpr].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos206]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 6114;
+  fra.me.meth = LOCATE_parser_prod___AVarAssignExpr___init_avarassignexpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  fra.me.REG[3] = p3;
+  /* ./parser//parser_prod.nit:6120 */
+  CALL_parser_prod___AVarAssignExpr___empty_init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  /* ./parser//parser_prod.nit:6121 */
+  REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Cast failed", NULL, LOCATE_parser_prod, 6121);
+  }
+  ATTR_parser_nodes___AVarFormExpr____n_id(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./parser//parser_prod.nit:6122 */
+  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+    nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 6122);
+  }
+  CALL_parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  /* ./parser//parser_prod.nit:6123 */
+  REGB0 = TAG_Bool(fra.me.REG[2]!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Cast failed", NULL, LOCATE_parser_prod, 6123);
+  }
+  ATTR_parser_nodes___AAssignFormExpr____n_assign(fra.me.REG[0]) = fra.me.REG[2];
+  /* ./parser//parser_prod.nit:6124 */
+  REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+    nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 6124);
+  }
+  CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+  /* ./parser//parser_prod.nit:6125 */
+  REGB0 = TAG_Bool(fra.me.REG[3]!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Cast failed", NULL, LOCATE_parser_prod, 6125);
+  }
+  ATTR_parser_nodes___AAssignFormExpr____n_value(fra.me.REG[0]) = fra.me.REG[3];
+  /* ./parser//parser_prod.nit:6126 */
+  REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+    nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 6126);
+  }
+  CALL_parser_prod___ANode___parent__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  init_table[itpos206] = 1;
+  return;
+}
+void parser_prod___AVarAssignExpr___replace_child(val_t p0, val_t p1, val_t p2){
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 6129;
+  fra.me.meth = LOCATE_parser_prod___AVarAssignExpr___replace_child;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  /* ./parser//parser_prod.nit:6131 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AVarFormExpr____n_id(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_id", LOCATE_parser_prod, 6131);
+  }
+  fra.me.REG[3] = ATTR_parser_nodes___AVarFormExpr____n_id(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+    REGB0 = REGB1;
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:6132 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:6133 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 6133);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:6134 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_TId, ID_TId)) /*cast TId*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 6134);
+      }
+      /* ./parser//parser_prod.nit:6135 */
+      ATTR_parser_nodes___AVarFormExpr____n_id(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:6137 */
+      nit_abort("Aborted", NULL, LOCATE_parser_prod, 6137);
+    }
+    /* ./parser//parser_prod.nit:6139 */
+    goto label1;
+  }
+  /* ./parser//parser_prod.nit:6141 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AAssignFormExpr____n_assign(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_assign", LOCATE_parser_prod, 6141);
+  }
+  fra.me.REG[3] = ATTR_parser_nodes___AAssignFormExpr____n_assign(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+    REGB0 = REGB1;
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:6142 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:6143 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 6143);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:6144 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_TAssign, ID_TAssign)) /*cast TAssign*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 6144);
+      }
+      /* ./parser//parser_prod.nit:6145 */
+      ATTR_parser_nodes___AAssignFormExpr____n_assign(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:6147 */
+      nit_abort("Aborted", NULL, LOCATE_parser_prod, 6147);
+    }
+    /* ./parser//parser_prod.nit:6149 */
+    goto label1;
+  }
+  /* ./parser//parser_prod.nit:6151 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AAssignFormExpr____n_value(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_value", LOCATE_parser_prod, 6151);
+  }
+  fra.me.REG[3] = ATTR_parser_nodes___AAssignFormExpr____n_value(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+    REGB0 = REGB1;
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:6152 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:6153 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 6153);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:6154 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_AExpr, ID_AExpr)) /*cast AExpr*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 6154);
+      }
+      /* ./parser//parser_prod.nit:6155 */
+      ATTR_parser_nodes___AAssignFormExpr____n_value(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:6157 */
+      nit_abort("Aborted", NULL, LOCATE_parser_prod, 6157);
+    }
+    /* ./parser//parser_prod.nit:6159 */
+    goto label1;
+  }
+  label1: while(0);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser_prod___AVarAssignExpr___visit_all(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 6163;
+  fra.me.meth = LOCATE_parser_prod___AVarAssignExpr___visit_all;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:6165 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AVarFormExpr____n_id(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_id", LOCATE_parser_prod, 6165);
+  }
+  fra.me.REG[2] = ATTR_parser_nodes___AVarFormExpr____n_id(fra.me.REG[0]);
+  CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser_prod.nit:6166 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AAssignFormExpr____n_assign(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_assign", LOCATE_parser_prod, 6166);
+  }
+  fra.me.REG[2] = ATTR_parser_nodes___AAssignFormExpr____n_assign(fra.me.REG[0]);
+  CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser_prod.nit:6167 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AAssignFormExpr____n_value(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_value", LOCATE_parser_prod, 6167);
+  }
+  fra.me.REG[0] = ATTR_parser_nodes___AAssignFormExpr____n_value(fra.me.REG[0]);
+  CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser_prod___AVarReassignExpr___empty_init(val_t p0, int* init_table){
+  int itpos207 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_AVarReassignExpr].i;
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  if (init_table[itpos207]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 6171;
+  fra.me.meth = LOCATE_parser_prod___AVarReassignExpr___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos207] = 1;
+  return;
+}
+void parser_prod___AVarReassignExpr___init_avarreassignexpr(val_t p0, val_t p1, val_t p2, val_t p3, int* init_table){
+  int itpos208 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_AVarReassignExpr].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos208]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 6173;
+  fra.me.meth = LOCATE_parser_prod___AVarReassignExpr___init_avarreassignexpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  fra.me.REG[3] = p3;
+  /* ./parser//parser_prod.nit:6179 */
+  CALL_parser_prod___AVarReassignExpr___empty_init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  /* ./parser//parser_prod.nit:6180 */
+  REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Cast failed", NULL, LOCATE_parser_prod, 6180);
+  }
+  ATTR_parser_nodes___AVarFormExpr____n_id(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./parser//parser_prod.nit:6181 */
+  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+    nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 6181);
+  }
+  CALL_parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  /* ./parser//parser_prod.nit:6182 */
+  REGB0 = TAG_Bool(fra.me.REG[2]!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Cast failed", NULL, LOCATE_parser_prod, 6182);
+  }
+  ATTR_parser_nodes___AReassignFormExpr____n_assign_op(fra.me.REG[0]) = fra.me.REG[2];
+  /* ./parser//parser_prod.nit:6183 */
+  REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+    nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 6183);
+  }
+  CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+  /* ./parser//parser_prod.nit:6184 */
+  REGB0 = TAG_Bool(fra.me.REG[3]!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Cast failed", NULL, LOCATE_parser_prod, 6184);
+  }
+  ATTR_parser_nodes___AReassignFormExpr____n_value(fra.me.REG[0]) = fra.me.REG[3];
+  /* ./parser//parser_prod.nit:6185 */
+  REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+    nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 6185);
+  }
+  CALL_parser_prod___ANode___parent__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  init_table[itpos208] = 1;
+  return;
+}
+void parser_prod___AVarReassignExpr___replace_child(val_t p0, val_t p1, val_t p2){
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 6188;
+  fra.me.meth = LOCATE_parser_prod___AVarReassignExpr___replace_child;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  /* ./parser//parser_prod.nit:6190 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AVarFormExpr____n_id(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_id", LOCATE_parser_prod, 6190);
+  }
+  fra.me.REG[3] = ATTR_parser_nodes___AVarFormExpr____n_id(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+    REGB0 = REGB1;
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:6191 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:6192 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 6192);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:6193 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_TId, ID_TId)) /*cast TId*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 6193);
+      }
+      /* ./parser//parser_prod.nit:6194 */
+      ATTR_parser_nodes___AVarFormExpr____n_id(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:6196 */
+      nit_abort("Aborted", NULL, LOCATE_parser_prod, 6196);
+    }
+    /* ./parser//parser_prod.nit:6198 */
+    goto label1;
+  }
+  /* ./parser//parser_prod.nit:6200 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AReassignFormExpr____n_assign_op(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_assign_op", LOCATE_parser_prod, 6200);
+  }
+  fra.me.REG[3] = ATTR_parser_nodes___AReassignFormExpr____n_assign_op(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+    REGB0 = REGB1;
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:6201 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:6202 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 6202);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:6203 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_AAssignOp, ID_AAssignOp)) /*cast AAssignOp*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 6203);
+      }
+      /* ./parser//parser_prod.nit:6204 */
+      ATTR_parser_nodes___AReassignFormExpr____n_assign_op(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:6206 */
+      nit_abort("Aborted", NULL, LOCATE_parser_prod, 6206);
+    }
+    /* ./parser//parser_prod.nit:6208 */
+    goto label1;
+  }
+  /* ./parser//parser_prod.nit:6210 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AReassignFormExpr____n_value(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_value", LOCATE_parser_prod, 6210);
+  }
+  fra.me.REG[3] = ATTR_parser_nodes___AReassignFormExpr____n_value(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+    REGB0 = REGB1;
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:6211 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:6212 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 6212);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:6213 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_AExpr, ID_AExpr)) /*cast AExpr*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 6213);
+      }
+      /* ./parser//parser_prod.nit:6214 */
+      ATTR_parser_nodes___AReassignFormExpr____n_value(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:6216 */
+      nit_abort("Aborted", NULL, LOCATE_parser_prod, 6216);
+    }
+    /* ./parser//parser_prod.nit:6218 */
+    goto label1;
+  }
+  label1: while(0);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser_prod___AVarReassignExpr___visit_all(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 6222;
+  fra.me.meth = LOCATE_parser_prod___AVarReassignExpr___visit_all;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:6224 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AVarFormExpr____n_id(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_id", LOCATE_parser_prod, 6224);
+  }
+  fra.me.REG[2] = ATTR_parser_nodes___AVarFormExpr____n_id(fra.me.REG[0]);
+  CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser_prod.nit:6225 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AReassignFormExpr____n_assign_op(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_assign_op", LOCATE_parser_prod, 6225);
+  }
+  fra.me.REG[2] = ATTR_parser_nodes___AReassignFormExpr____n_assign_op(fra.me.REG[0]);
+  CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser_prod.nit:6226 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AReassignFormExpr____n_value(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_value", LOCATE_parser_prod, 6226);
+  }
+  fra.me.REG[0] = ATTR_parser_nodes___AReassignFormExpr____n_value(fra.me.REG[0]);
+  CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser_prod___ARangeExpr___empty_init(val_t p0, int* init_table){
+  int itpos209 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ARangeExpr].i;
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  if (init_table[itpos209]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 6230;
+  fra.me.meth = LOCATE_parser_prod___ARangeExpr___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos209] = 1;
+  return;
+}
+void parser_prod___ARangeExpr___init_arangeexpr(val_t p0, val_t p1, val_t p2, int* init_table){
+  int itpos210 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ARangeExpr].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos210]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 6232;
+  fra.me.meth = LOCATE_parser_prod___ARangeExpr___init_arangeexpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  /* ./parser//parser_prod.nit:6237 */
+  CALL_parser_prod___ARangeExpr___empty_init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  /* ./parser//parser_prod.nit:6238 */
+  REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Cast failed", NULL, LOCATE_parser_prod, 6238);
+  }
+  ATTR_parser_nodes___ARangeExpr____n_expr(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./parser//parser_prod.nit:6239 */
+  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+    nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 6239);
+  }
+  CALL_parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  /* ./parser//parser_prod.nit:6240 */
+  REGB0 = TAG_Bool(fra.me.REG[2]!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Cast failed", NULL, LOCATE_parser_prod, 6240);
+  }
+  ATTR_parser_nodes___ARangeExpr____n_expr2(fra.me.REG[0]) = fra.me.REG[2];
+  /* ./parser//parser_prod.nit:6241 */
+  REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+    nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 6241);
+  }
+  CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  init_table[itpos210] = 1;
+  return;
+}
+void parser_prod___ARangeExpr___replace_child(val_t p0, val_t p1, val_t p2){
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 6244;
+  fra.me.meth = LOCATE_parser_prod___ARangeExpr___replace_child;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  /* ./parser//parser_prod.nit:6246 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ARangeExpr____n_expr(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser_prod, 6246);
+  }
+  fra.me.REG[3] = ATTR_parser_nodes___ARangeExpr____n_expr(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+    REGB0 = REGB1;
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:6247 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:6248 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 6248);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:6249 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_AExpr, ID_AExpr)) /*cast AExpr*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 6249);
+      }
+      /* ./parser//parser_prod.nit:6250 */
+      ATTR_parser_nodes___ARangeExpr____n_expr(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:6252 */
+      nit_abort("Aborted", NULL, LOCATE_parser_prod, 6252);
+    }
+    /* ./parser//parser_prod.nit:6254 */
+    goto label1;
+  }
+  /* ./parser//parser_prod.nit:6256 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ARangeExpr____n_expr2(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_expr2", LOCATE_parser_prod, 6256);
+  }
+  fra.me.REG[3] = ATTR_parser_nodes___ARangeExpr____n_expr2(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+    REGB0 = REGB1;
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:6257 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:6258 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 6258);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:6259 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_AExpr, ID_AExpr)) /*cast AExpr*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 6259);
+      }
+      /* ./parser//parser_prod.nit:6260 */
+      ATTR_parser_nodes___ARangeExpr____n_expr2(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:6262 */
+      nit_abort("Aborted", NULL, LOCATE_parser_prod, 6262);
+    }
+    /* ./parser//parser_prod.nit:6264 */
+    goto label1;
+  }
+  label1: while(0);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser_prod___ARangeExpr___visit_all(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 6268;
+  fra.me.meth = LOCATE_parser_prod___ARangeExpr___visit_all;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:6270 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ARangeExpr____n_expr(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser_prod, 6270);
+  }
+  fra.me.REG[2] = ATTR_parser_nodes___ARangeExpr____n_expr(fra.me.REG[0]);
+  CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser_prod.nit:6271 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ARangeExpr____n_expr2(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_expr2", LOCATE_parser_prod, 6271);
+  }
+  fra.me.REG[0] = ATTR_parser_nodes___ARangeExpr____n_expr2(fra.me.REG[0]);
+  CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser_prod___ACrangeExpr___empty_init(val_t p0, int* init_table){
+  int itpos211 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ACrangeExpr].i;
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  if (init_table[itpos211]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 6275;
+  fra.me.meth = LOCATE_parser_prod___ACrangeExpr___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos211] = 1;
+  return;
+}
+void parser_prod___ACrangeExpr___init_acrangeexpr(val_t p0, val_t p1, val_t p2, int* init_table){
+  int itpos212 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ACrangeExpr].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos212]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 6277;
+  fra.me.meth = LOCATE_parser_prod___ACrangeExpr___init_acrangeexpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  /* ./parser//parser_prod.nit:6282 */
+  CALL_parser_prod___ACrangeExpr___empty_init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  /* ./parser//parser_prod.nit:6283 */
+  REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Cast failed", NULL, LOCATE_parser_prod, 6283);
+  }
+  ATTR_parser_nodes___ARangeExpr____n_expr(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./parser//parser_prod.nit:6284 */
+  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+    nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 6284);
+  }
+  CALL_parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  /* ./parser//parser_prod.nit:6285 */
+  REGB0 = TAG_Bool(fra.me.REG[2]!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Cast failed", NULL, LOCATE_parser_prod, 6285);
+  }
+  ATTR_parser_nodes___ARangeExpr____n_expr2(fra.me.REG[0]) = fra.me.REG[2];
+  /* ./parser//parser_prod.nit:6286 */
+  REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+    nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 6286);
+  }
+  CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  init_table[itpos212] = 1;
+  return;
+}
+void parser_prod___ACrangeExpr___replace_child(val_t p0, val_t p1, val_t p2){
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 6289;
+  fra.me.meth = LOCATE_parser_prod___ACrangeExpr___replace_child;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  /* ./parser//parser_prod.nit:6291 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ARangeExpr____n_expr(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser_prod, 6291);
+  }
+  fra.me.REG[3] = ATTR_parser_nodes___ARangeExpr____n_expr(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+    REGB0 = REGB1;
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:6292 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:6293 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 6293);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:6294 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_AExpr, ID_AExpr)) /*cast AExpr*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 6294);
+      }
+      /* ./parser//parser_prod.nit:6295 */
+      ATTR_parser_nodes___ARangeExpr____n_expr(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:6297 */
+      nit_abort("Aborted", NULL, LOCATE_parser_prod, 6297);
+    }
+    /* ./parser//parser_prod.nit:6299 */
+    goto label1;
+  }
+  /* ./parser//parser_prod.nit:6301 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ARangeExpr____n_expr2(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_expr2", LOCATE_parser_prod, 6301);
+  }
+  fra.me.REG[3] = ATTR_parser_nodes___ARangeExpr____n_expr2(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+    REGB0 = REGB1;
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:6302 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:6303 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 6303);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:6304 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_AExpr, ID_AExpr)) /*cast AExpr*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 6304);
+      }
+      /* ./parser//parser_prod.nit:6305 */
+      ATTR_parser_nodes___ARangeExpr____n_expr2(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:6307 */
+      nit_abort("Aborted", NULL, LOCATE_parser_prod, 6307);
+    }
+    /* ./parser//parser_prod.nit:6309 */
+    goto label1;
+  }
+  label1: while(0);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser_prod___ACrangeExpr___visit_all(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 6313;
+  fra.me.meth = LOCATE_parser_prod___ACrangeExpr___visit_all;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:6315 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ARangeExpr____n_expr(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser_prod, 6315);
+  }
+  fra.me.REG[2] = ATTR_parser_nodes___ARangeExpr____n_expr(fra.me.REG[0]);
+  CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser_prod.nit:6316 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ARangeExpr____n_expr2(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_expr2", LOCATE_parser_prod, 6316);
+  }
+  fra.me.REG[0] = ATTR_parser_nodes___ARangeExpr____n_expr2(fra.me.REG[0]);
+  CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser_prod___AOrangeExpr___empty_init(val_t p0, int* init_table){
+  int itpos213 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_AOrangeExpr].i;
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  if (init_table[itpos213]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 6320;
+  fra.me.meth = LOCATE_parser_prod___AOrangeExpr___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos213] = 1;
+  return;
+}
+void parser_prod___AOrangeExpr___init_aorangeexpr(val_t p0, val_t p1, val_t p2, int* init_table){
+  int itpos214 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_AOrangeExpr].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos214]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 6322;
+  fra.me.meth = LOCATE_parser_prod___AOrangeExpr___init_aorangeexpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  /* ./parser//parser_prod.nit:6327 */
+  CALL_parser_prod___AOrangeExpr___empty_init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  /* ./parser//parser_prod.nit:6328 */
+  REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Cast failed", NULL, LOCATE_parser_prod, 6328);
+  }
+  ATTR_parser_nodes___ARangeExpr____n_expr(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./parser//parser_prod.nit:6329 */
+  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+    nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 6329);
+  }
+  CALL_parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  /* ./parser//parser_prod.nit:6330 */
+  REGB0 = TAG_Bool(fra.me.REG[2]!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Cast failed", NULL, LOCATE_parser_prod, 6330);
+  }
+  ATTR_parser_nodes___ARangeExpr____n_expr2(fra.me.REG[0]) = fra.me.REG[2];
+  /* ./parser//parser_prod.nit:6331 */
+  REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+    nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 6331);
+  }
+  CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  init_table[itpos214] = 1;
+  return;
+}
+void parser_prod___AOrangeExpr___replace_child(val_t p0, val_t p1, val_t p2){
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 6334;
+  fra.me.meth = LOCATE_parser_prod___AOrangeExpr___replace_child;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  /* ./parser//parser_prod.nit:6336 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ARangeExpr____n_expr(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser_prod, 6336);
+  }
+  fra.me.REG[3] = ATTR_parser_nodes___ARangeExpr____n_expr(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+    REGB0 = REGB1;
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:6337 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:6338 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 6338);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:6339 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_AExpr, ID_AExpr)) /*cast AExpr*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 6339);
+      }
+      /* ./parser//parser_prod.nit:6340 */
+      ATTR_parser_nodes___ARangeExpr____n_expr(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:6342 */
+      nit_abort("Aborted", NULL, LOCATE_parser_prod, 6342);
+    }
+    /* ./parser//parser_prod.nit:6344 */
+    goto label1;
+  }
+  /* ./parser//parser_prod.nit:6346 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ARangeExpr____n_expr2(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_expr2", LOCATE_parser_prod, 6346);
+  }
+  fra.me.REG[3] = ATTR_parser_nodes___ARangeExpr____n_expr2(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+    REGB0 = REGB1;
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:6347 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:6348 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 6348);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:6349 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_AExpr, ID_AExpr)) /*cast AExpr*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 6349);
+      }
+      /* ./parser//parser_prod.nit:6350 */
+      ATTR_parser_nodes___ARangeExpr____n_expr2(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:6352 */
+      nit_abort("Aborted", NULL, LOCATE_parser_prod, 6352);
+    }
+    /* ./parser//parser_prod.nit:6354 */
+    goto label1;
+  }
+  label1: while(0);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser_prod___AOrangeExpr___visit_all(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 6358;
+  fra.me.meth = LOCATE_parser_prod___AOrangeExpr___visit_all;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:6360 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ARangeExpr____n_expr(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser_prod, 6360);
+  }
+  fra.me.REG[2] = ATTR_parser_nodes___ARangeExpr____n_expr(fra.me.REG[0]);
+  CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser_prod.nit:6361 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ARangeExpr____n_expr2(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_expr2", LOCATE_parser_prod, 6361);
+  }
+  fra.me.REG[0] = ATTR_parser_nodes___ARangeExpr____n_expr2(fra.me.REG[0]);
+  CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser_prod___AArrayExpr___empty_init(val_t p0, int* init_table){
+  int itpos215 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_AArrayExpr].i;
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  if (init_table[itpos215]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 6365;
+  fra.me.meth = LOCATE_parser_prod___AArrayExpr___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos215] = 1;
+  return;
+}
+void parser_prod___AArrayExpr___init_aarrayexpr(val_t p0, val_t p1, int* init_table){
+  int itpos216 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_AArrayExpr].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  if (init_table[itpos216]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 6367;
+  fra.me.meth = LOCATE_parser_prod___AArrayExpr___init_aarrayexpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:6371 */
+  CALL_parser_prod___AArrayExpr___empty_init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  CALL_abstract_collection___Collection___iterate(fra.me.REG[1])(fra.me.REG[1], (&(fra.me)), ((fun_t)OC_parser_prod___AArrayExpr___init_aarrayexpr_1));
+  stack_frame_head = fra.me.prev;
+  init_table[itpos216] = 1;
+  return;
+}
+  void OC_parser_prod___AArrayExpr___init_aarrayexpr_1(struct stack_frame_t *closctx, val_t p0, struct stack_frame_t *closctx_param, fun_t clos_fun0){
+    struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+    val_t REGB0;
+    fun_t CREG[1];
+    val_t tmp;
+    /* ./parser//parser_prod.nit:6372 */
+    fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+    fra.me.file = LOCATE_parser_prod;
+    fra.me.line = 0;
+    fra.me.meth = LOCATE_parser_prod___AArrayExpr___init_aarrayexpr;
+    fra.me.has_broke = 0;
+    fra.me.REG_size = 2;
+    fra.me.REG[0] = NIT_NULL;
+    fra.me.REG[1] = NIT_NULL;
+    fra.me.closure_ctx = closctx_param;
+    fra.me.closure_funs = CREG;
+    fra.me.REG[0] = p0;
+    CREG[0] = clos_fun0;
+    /* ./parser//parser_prod.nit:6373 */
+    REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[0], COLOR_AExpr, ID_AExpr)) /*cast AExpr*/;
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      nit_abort("Assert failed", NULL, LOCATE_parser_prod, 6373);
+    }
+    /* ./parser//parser_prod.nit:6374 */
+    REGB0 = TAG_Bool(ATTR_parser_nodes___AArrayExpr____n_exprs(closctx->REG[0])!=NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      nit_abort("Uninitialized attribute %s", "_n_exprs", LOCATE_parser_prod, 6374);
+    }
+    fra.me.REG[1] = ATTR_parser_nodes___AArrayExpr____n_exprs(closctx->REG[0]);
+    CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+    /* ./parser//parser_prod.nit:6375 */
+    CALL_parser_prod___ANode___parent__eq(fra.me.REG[0])(fra.me.REG[0], closctx->REG[0]);
+    stack_frame_head = fra.me.prev;
+    return;
+  }
+void parser_prod___AArrayExpr___replace_child(val_t p0, val_t p1, val_t p2){
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t REGB2;
+  val_t REGB3;
+  val_t REGB4;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 6379;
+  fra.me.meth = LOCATE_parser_prod___AArrayExpr___replace_child;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  /* ./parser//parser_prod.nit:6381 */
+  REGB0 = TAG_Int(0);
+  REGB1 = TAG_Bool(ATTR_parser_nodes___AArrayExpr____n_exprs(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB1)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_exprs", LOCATE_parser_prod, 6381);
+  }
+  fra.me.REG[3] = ATTR_parser_nodes___AArrayExpr____n_exprs(fra.me.REG[0]);
+  REGB1 = CALL_abstract_collection___Collection___length(fra.me.REG[3])(fra.me.REG[3]);
+  /* ./../lib/standard//kernel.nit:332 */
+  while(1) {
+    /* ./../lib/standard//kernel.nit:212 */
+    REGB2 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
+    /* ./../lib/standard//kernel.nit:332 */
+    if (UNTAG_Bool(REGB2)) {
+      /* ./parser//parser_prod.nit:6381 */
+      REGB2 = REGB0;
+      /* ./parser//parser_prod.nit:6382 */
+      REGB3 = TAG_Bool(ATTR_parser_nodes___AArrayExpr____n_exprs(fra.me.REG[0])!=NIT_NULL);
+      if (UNTAG_Bool(REGB3)) {
+      } else {
+        nit_abort("Uninitialized attribute %s", "_n_exprs", LOCATE_parser_prod, 6382);
+      }
+      fra.me.REG[3] = ATTR_parser_nodes___AArrayExpr____n_exprs(fra.me.REG[0]);
+      fra.me.REG[3] = CALL_abstract_collection___MapRead_____bra(fra.me.REG[3])(fra.me.REG[3], REGB2);
+      REGB3 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
+      if (UNTAG_Bool(REGB3)) {
+      } else {
+        REGB4 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+        if (UNTAG_Bool(REGB4)) {
+          REGB4 = TAG_Bool(false);
+          REGB3 = REGB4;
+        } else {
+          REGB4 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+          REGB3 = REGB4;
+        }
+      }
+      if (UNTAG_Bool(REGB3)) {
+        /* ./parser//parser_prod.nit:6383 */
+        REGB3 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+        if (UNTAG_Bool(REGB3)) {
+        } else {
+          REGB4 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+          if (UNTAG_Bool(REGB4)) {
+            REGB4 = TAG_Bool(false);
+            REGB3 = REGB4;
+          } else {
+            REGB4 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+            REGB3 = REGB4;
+          }
+        }
+        REGB3 = TAG_Bool(!UNTAG_Bool(REGB3));
+        if (UNTAG_Bool(REGB3)) {
+          /* ./parser//parser_prod.nit:6384 */
+          REGB3 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_AExpr, ID_AExpr)) /*cast AExpr*/;
+          if (UNTAG_Bool(REGB3)) {
+          } else {
+            nit_abort("Assert failed", NULL, LOCATE_parser_prod, 6384);
+          }
+          /* ./parser//parser_prod.nit:6385 */
+          REGB3 = TAG_Bool(ATTR_parser_nodes___AArrayExpr____n_exprs(fra.me.REG[0])!=NIT_NULL);
+          if (UNTAG_Bool(REGB3)) {
+          } else {
+            nit_abort("Uninitialized attribute %s", "_n_exprs", LOCATE_parser_prod, 6385);
+          }
+          fra.me.REG[3] = ATTR_parser_nodes___AArrayExpr____n_exprs(fra.me.REG[0]);
+          CALL_abstract_collection___Map_____braeq(fra.me.REG[3])(fra.me.REG[3], REGB2, fra.me.REG[2]);
+          /* ./parser//parser_prod.nit:6386 */
+          REGB3 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+          if (UNTAG_Bool(REGB3)) {
+            nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 6386);
+          }
+          CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+        } else {
+          /* ./parser//parser_prod.nit:6388 */
+          REGB3 = TAG_Bool(ATTR_parser_nodes___AArrayExpr____n_exprs(fra.me.REG[0])!=NIT_NULL);
+          if (UNTAG_Bool(REGB3)) {
+          } else {
+            nit_abort("Uninitialized attribute %s", "_n_exprs", LOCATE_parser_prod, 6388);
+          }
+          fra.me.REG[3] = ATTR_parser_nodes___AArrayExpr____n_exprs(fra.me.REG[0]);
+          CALL_abstract_collection___Map___remove_at(fra.me.REG[3])(fra.me.REG[3], REGB2);
+        }
+        /* ./parser//parser_prod.nit:6390 */
+        goto label1;
+      }
+      /* ./../lib/standard//kernel.nit:334 */
+      REGB2 = TAG_Int(1);
+      /* ./../lib/standard//kernel.nit:215 */
+      REGB2 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB2));
+      /* ./../lib/standard//kernel.nit:334 */
+      REGB0 = REGB2;
+    } else {
+      /* ./../lib/standard//kernel.nit:332 */
+      goto label2;
+    }
+  }
+  label2: while(0);
+  label1: while(0);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser_prod___AArrayExpr___visit_all(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 6395;
+  fra.me.meth = LOCATE_parser_prod___AArrayExpr___visit_all;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:6397 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AArrayExpr____n_exprs(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_exprs", LOCATE_parser_prod, 6397);
+  }
+  fra.me.REG[0] = ATTR_parser_nodes___AArrayExpr____n_exprs(fra.me.REG[0]);
+  CALL_abstract_collection___Collection___iterate(fra.me.REG[0])(fra.me.REG[0], (&(fra.me)), ((fun_t)OC_parser_prod___AArrayExpr___visit_all_1));
+  stack_frame_head = fra.me.prev;
+  return;
+}
+  void OC_parser_prod___AArrayExpr___visit_all_1(struct stack_frame_t *closctx, val_t p0, struct stack_frame_t *closctx_param, fun_t clos_fun0){
+    struct {struct stack_frame_t me;} fra;
+    fun_t CREG[1];
+    val_t tmp;
+    fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+    fra.me.file = LOCATE_parser_prod;
+    fra.me.line = 0;
+    fra.me.meth = LOCATE_parser_prod___AArrayExpr___visit_all;
+    fra.me.has_broke = 0;
+    fra.me.REG_size = 1;
+    fra.me.REG[0] = NIT_NULL;
+    fra.me.closure_ctx = closctx_param;
+    fra.me.closure_funs = CREG;
+    fra.me.REG[0] = p0;
+    CREG[0] = clos_fun0;
+    /* ./parser//parser_prod.nit:6398 */
+    CALL_parser_prod___Visitor___enter_visit(closctx->REG[1])(closctx->REG[1], fra.me.REG[0]);
+    stack_frame_head = fra.me.prev;
+    return;
+  }
+void parser_prod___ASelfExpr___empty_init(val_t p0, int* init_table){
+  int itpos217 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ASelfExpr].i;
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  if (init_table[itpos217]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 6403;
+  fra.me.meth = LOCATE_parser_prod___ASelfExpr___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos217] = 1;
+  return;
+}
+void parser_prod___ASelfExpr___init_aselfexpr(val_t p0, val_t p1, int* init_table){
+  int itpos218 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ASelfExpr].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos218]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 6405;
+  fra.me.meth = LOCATE_parser_prod___ASelfExpr___init_aselfexpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:6409 */
+  CALL_parser_prod___ASelfExpr___empty_init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  /* ./parser//parser_prod.nit:6410 */
+  REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Cast failed", NULL, LOCATE_parser_prod, 6410);
+  }
+  ATTR_parser_nodes___ASelfExpr____n_kwself(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./parser//parser_prod.nit:6411 */
+  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+    nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 6411);
+  }
+  CALL_parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  init_table[itpos218] = 1;
+  return;
+}
+void parser_prod___ASelfExpr___replace_child(val_t p0, val_t p1, val_t p2){
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 6414;
+  fra.me.meth = LOCATE_parser_prod___ASelfExpr___replace_child;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  /* ./parser//parser_prod.nit:6416 */
+  fra.me.REG[3] = ATTR_parser_nodes___ASelfExpr____n_kwself(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+      REGB0 = REGB1;
+    }
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:6417 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:6418 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 6418);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:6419 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_TKwself, ID_TKwself)) /*cast TKwself*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 6419);
+      }
+      /* ./parser//parser_prod.nit:6420 */
+      ATTR_parser_nodes___ASelfExpr____n_kwself(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:6422 */
+      nit_abort("Aborted", NULL, LOCATE_parser_prod, 6422);
+    }
+    /* ./parser//parser_prod.nit:6424 */
+    goto label1;
+  }
+  label1: while(0);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser_prod___ASelfExpr___visit_all(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 6428;
+  fra.me.meth = LOCATE_parser_prod___ASelfExpr___visit_all;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:6430 */
+  fra.me.REG[0] = ATTR_parser_nodes___ASelfExpr____n_kwself(fra.me.REG[0]);
+  CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser_prod___AImplicitSelfExpr___empty_init(val_t p0, int* init_table){
+  int itpos219 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_AImplicitSelfExpr].i;
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  if (init_table[itpos219]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 6434;
+  fra.me.meth = LOCATE_parser_prod___AImplicitSelfExpr___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos219] = 1;
+  return;
+}
+void parser_prod___AImplicitSelfExpr___init_aimplicitselfexpr(val_t p0, int* init_table){
+  int itpos220 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_AImplicitSelfExpr].i;
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  if (init_table[itpos220]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 6436;
+  fra.me.meth = LOCATE_parser_prod___AImplicitSelfExpr___init_aimplicitselfexpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./parser//parser_prod.nit:6438 */
+  CALL_parser_prod___AImplicitSelfExpr___empty_init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  stack_frame_head = fra.me.prev;
+  init_table[itpos220] = 1;
+  return;
+}
+void parser_prod___AImplicitSelfExpr___replace_child(val_t p0, val_t p1, val_t p2){
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 6441;
+  fra.me.meth = LOCATE_parser_prod___AImplicitSelfExpr___replace_child;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser_prod___AImplicitSelfExpr___visit_all(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 6445;
+  fra.me.meth = LOCATE_parser_prod___AImplicitSelfExpr___visit_all;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser_prod___ATrueExpr___empty_init(val_t p0, int* init_table){
+  int itpos221 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ATrueExpr].i;
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  if (init_table[itpos221]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 6450;
+  fra.me.meth = LOCATE_parser_prod___ATrueExpr___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos221] = 1;
+  return;
+}
+void parser_prod___ATrueExpr___init_atrueexpr(val_t p0, val_t p1, int* init_table){
+  int itpos222 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ATrueExpr].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos222]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 6452;
+  fra.me.meth = LOCATE_parser_prod___ATrueExpr___init_atrueexpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:6456 */
+  CALL_parser_prod___ATrueExpr___empty_init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  /* ./parser//parser_prod.nit:6457 */
+  REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Cast failed", NULL, LOCATE_parser_prod, 6457);
+  }
+  ATTR_parser_nodes___ATrueExpr____n_kwtrue(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./parser//parser_prod.nit:6458 */
+  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+    nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 6458);
+  }
+  CALL_parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  init_table[itpos222] = 1;
+  return;
+}
+void parser_prod___ATrueExpr___replace_child(val_t p0, val_t p1, val_t p2){
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 6461;
+  fra.me.meth = LOCATE_parser_prod___ATrueExpr___replace_child;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  /* ./parser//parser_prod.nit:6463 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ATrueExpr____n_kwtrue(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_kwtrue", LOCATE_parser_prod, 6463);
+  }
+  fra.me.REG[3] = ATTR_parser_nodes___ATrueExpr____n_kwtrue(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+    REGB0 = REGB1;
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:6464 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:6465 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 6465);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:6466 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_TKwtrue, ID_TKwtrue)) /*cast TKwtrue*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 6466);
+      }
+      /* ./parser//parser_prod.nit:6467 */
+      ATTR_parser_nodes___ATrueExpr____n_kwtrue(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:6469 */
+      nit_abort("Aborted", NULL, LOCATE_parser_prod, 6469);
+    }
+    /* ./parser//parser_prod.nit:6471 */
+    goto label1;
+  }
+  label1: while(0);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser_prod___ATrueExpr___visit_all(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 6475;
+  fra.me.meth = LOCATE_parser_prod___ATrueExpr___visit_all;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:6477 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ATrueExpr____n_kwtrue(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_kwtrue", LOCATE_parser_prod, 6477);
+  }
+  fra.me.REG[0] = ATTR_parser_nodes___ATrueExpr____n_kwtrue(fra.me.REG[0]);
+  CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser_prod___AFalseExpr___empty_init(val_t p0, int* init_table){
+  int itpos223 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_AFalseExpr].i;
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  if (init_table[itpos223]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 6481;
+  fra.me.meth = LOCATE_parser_prod___AFalseExpr___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos223] = 1;
+  return;
+}
+void parser_prod___AFalseExpr___init_afalseexpr(val_t p0, val_t p1, int* init_table){
+  int itpos224 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_AFalseExpr].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos224]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 6483;
+  fra.me.meth = LOCATE_parser_prod___AFalseExpr___init_afalseexpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:6487 */
+  CALL_parser_prod___AFalseExpr___empty_init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  /* ./parser//parser_prod.nit:6488 */
+  REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Cast failed", NULL, LOCATE_parser_prod, 6488);
+  }
+  ATTR_parser_nodes___AFalseExpr____n_kwfalse(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./parser//parser_prod.nit:6489 */
+  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+    nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 6489);
+  }
+  CALL_parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  init_table[itpos224] = 1;
+  return;
+}
+void parser_prod___AFalseExpr___replace_child(val_t p0, val_t p1, val_t p2){
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 6492;
+  fra.me.meth = LOCATE_parser_prod___AFalseExpr___replace_child;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  /* ./parser//parser_prod.nit:6494 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AFalseExpr____n_kwfalse(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_kwfalse", LOCATE_parser_prod, 6494);
+  }
+  fra.me.REG[3] = ATTR_parser_nodes___AFalseExpr____n_kwfalse(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+    REGB0 = REGB1;
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:6495 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:6496 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 6496);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:6497 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_TKwfalse, ID_TKwfalse)) /*cast TKwfalse*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 6497);
+      }
+      /* ./parser//parser_prod.nit:6498 */
+      ATTR_parser_nodes___AFalseExpr____n_kwfalse(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:6500 */
+      nit_abort("Aborted", NULL, LOCATE_parser_prod, 6500);
+    }
+    /* ./parser//parser_prod.nit:6502 */
+    goto label1;
+  }
+  label1: while(0);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser_prod___AFalseExpr___visit_all(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 6506;
+  fra.me.meth = LOCATE_parser_prod___AFalseExpr___visit_all;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:6508 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AFalseExpr____n_kwfalse(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_kwfalse", LOCATE_parser_prod, 6508);
+  }
+  fra.me.REG[0] = ATTR_parser_nodes___AFalseExpr____n_kwfalse(fra.me.REG[0]);
+  CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser_prod___ANullExpr___empty_init(val_t p0, int* init_table){
+  int itpos225 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ANullExpr].i;
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  if (init_table[itpos225]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 6512;
+  fra.me.meth = LOCATE_parser_prod___ANullExpr___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos225] = 1;
+  return;
+}
+void parser_prod___ANullExpr___init_anullexpr(val_t p0, val_t p1, int* init_table){
+  int itpos226 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ANullExpr].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos226]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 6514;
+  fra.me.meth = LOCATE_parser_prod___ANullExpr___init_anullexpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:6518 */
+  CALL_parser_prod___ANullExpr___empty_init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  /* ./parser//parser_prod.nit:6519 */
+  REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Cast failed", NULL, LOCATE_parser_prod, 6519);
+  }
+  ATTR_parser_nodes___ANullExpr____n_kwnull(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./parser//parser_prod.nit:6520 */
+  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+    nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 6520);
+  }
+  CALL_parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  init_table[itpos226] = 1;
+  return;
+}
+void parser_prod___ANullExpr___replace_child(val_t p0, val_t p1, val_t p2){
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 6523;
+  fra.me.meth = LOCATE_parser_prod___ANullExpr___replace_child;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  /* ./parser//parser_prod.nit:6525 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ANullExpr____n_kwnull(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_kwnull", LOCATE_parser_prod, 6525);
+  }
+  fra.me.REG[3] = ATTR_parser_nodes___ANullExpr____n_kwnull(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+    REGB0 = REGB1;
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:6526 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:6527 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 6527);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:6528 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_TKwnull, ID_TKwnull)) /*cast TKwnull*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 6528);
+      }
+      /* ./parser//parser_prod.nit:6529 */
+      ATTR_parser_nodes___ANullExpr____n_kwnull(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:6531 */
+      nit_abort("Aborted", NULL, LOCATE_parser_prod, 6531);
+    }
+    /* ./parser//parser_prod.nit:6533 */
+    goto label1;
+  }
+  label1: while(0);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser_prod___ANullExpr___visit_all(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 6537;
+  fra.me.meth = LOCATE_parser_prod___ANullExpr___visit_all;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:6539 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ANullExpr____n_kwnull(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_kwnull", LOCATE_parser_prod, 6539);
+  }
+  fra.me.REG[0] = ATTR_parser_nodes___ANullExpr____n_kwnull(fra.me.REG[0]);
+  CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser_prod___AIntExpr___empty_init(val_t p0, int* init_table){
+  int itpos227 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_AIntExpr].i;
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  if (init_table[itpos227]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 6543;
+  fra.me.meth = LOCATE_parser_prod___AIntExpr___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos227] = 1;
+  return;
+}
+void parser_prod___AIntExpr___init_aintexpr(val_t p0, val_t p1, int* init_table){
+  int itpos228 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_AIntExpr].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos228]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 6545;
+  fra.me.meth = LOCATE_parser_prod___AIntExpr___init_aintexpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:6549 */
+  CALL_parser_prod___AIntExpr___empty_init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  /* ./parser//parser_prod.nit:6550 */
+  REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Cast failed", NULL, LOCATE_parser_prod, 6550);
+  }
+  ATTR_parser_nodes___AIntExpr____n_number(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./parser//parser_prod.nit:6551 */
+  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+    nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 6551);
+  }
+  CALL_parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  init_table[itpos228] = 1;
+  return;
+}
+void parser_prod___AIntExpr___replace_child(val_t p0, val_t p1, val_t p2){
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 6554;
+  fra.me.meth = LOCATE_parser_prod___AIntExpr___replace_child;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  /* ./parser//parser_prod.nit:6556 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AIntExpr____n_number(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_number", LOCATE_parser_prod, 6556);
+  }
+  fra.me.REG[3] = ATTR_parser_nodes___AIntExpr____n_number(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+    REGB0 = REGB1;
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:6557 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:6558 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 6558);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:6559 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_TNumber, ID_TNumber)) /*cast TNumber*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 6559);
+      }
+      /* ./parser//parser_prod.nit:6560 */
+      ATTR_parser_nodes___AIntExpr____n_number(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:6562 */
+      nit_abort("Aborted", NULL, LOCATE_parser_prod, 6562);
+    }
+    /* ./parser//parser_prod.nit:6564 */
+    goto label1;
+  }
+  label1: while(0);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser_prod___AIntExpr___visit_all(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 6568;
+  fra.me.meth = LOCATE_parser_prod___AIntExpr___visit_all;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:6570 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AIntExpr____n_number(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_number", LOCATE_parser_prod, 6570);
+  }
+  fra.me.REG[0] = ATTR_parser_nodes___AIntExpr____n_number(fra.me.REG[0]);
+  CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser_prod___AFloatExpr___empty_init(val_t p0, int* init_table){
+  int itpos229 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_AFloatExpr].i;
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  if (init_table[itpos229]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 6574;
+  fra.me.meth = LOCATE_parser_prod___AFloatExpr___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos229] = 1;
+  return;
+}
+void parser_prod___AFloatExpr___init_afloatexpr(val_t p0, val_t p1, int* init_table){
+  int itpos230 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_AFloatExpr].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos230]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 6576;
+  fra.me.meth = LOCATE_parser_prod___AFloatExpr___init_afloatexpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:6580 */
+  CALL_parser_prod___AFloatExpr___empty_init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  /* ./parser//parser_prod.nit:6581 */
+  REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Cast failed", NULL, LOCATE_parser_prod, 6581);
+  }
+  ATTR_parser_nodes___AFloatExpr____n_float(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./parser//parser_prod.nit:6582 */
+  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+    nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 6582);
+  }
+  CALL_parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  init_table[itpos230] = 1;
+  return;
+}
+void parser_prod___AFloatExpr___replace_child(val_t p0, val_t p1, val_t p2){
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 6585;
+  fra.me.meth = LOCATE_parser_prod___AFloatExpr___replace_child;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  /* ./parser//parser_prod.nit:6587 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AFloatExpr____n_float(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_float", LOCATE_parser_prod, 6587);
+  }
+  fra.me.REG[3] = ATTR_parser_nodes___AFloatExpr____n_float(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+    REGB0 = REGB1;
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:6588 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:6589 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 6589);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:6590 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_TFloat, ID_TFloat)) /*cast TFloat*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 6590);
+      }
+      /* ./parser//parser_prod.nit:6591 */
+      ATTR_parser_nodes___AFloatExpr____n_float(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:6593 */
+      nit_abort("Aborted", NULL, LOCATE_parser_prod, 6593);
+    }
+    /* ./parser//parser_prod.nit:6595 */
+    goto label1;
+  }
+  label1: while(0);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser_prod___AFloatExpr___visit_all(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 6599;
+  fra.me.meth = LOCATE_parser_prod___AFloatExpr___visit_all;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:6601 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AFloatExpr____n_float(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_float", LOCATE_parser_prod, 6601);
+  }
+  fra.me.REG[0] = ATTR_parser_nodes___AFloatExpr____n_float(fra.me.REG[0]);
+  CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser_prod___ACharExpr___empty_init(val_t p0, int* init_table){
+  int itpos231 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ACharExpr].i;
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  if (init_table[itpos231]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 6605;
+  fra.me.meth = LOCATE_parser_prod___ACharExpr___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos231] = 1;
+  return;
+}
+void parser_prod___ACharExpr___init_acharexpr(val_t p0, val_t p1, int* init_table){
+  int itpos232 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ACharExpr].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos232]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 6607;
+  fra.me.meth = LOCATE_parser_prod___ACharExpr___init_acharexpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:6611 */
+  CALL_parser_prod___ACharExpr___empty_init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  /* ./parser//parser_prod.nit:6612 */
+  REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Cast failed", NULL, LOCATE_parser_prod, 6612);
+  }
+  ATTR_parser_nodes___ACharExpr____n_char(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./parser//parser_prod.nit:6613 */
+  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+    nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 6613);
+  }
+  CALL_parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  init_table[itpos232] = 1;
+  return;
+}
+void parser_prod___ACharExpr___replace_child(val_t p0, val_t p1, val_t p2){
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 6616;
+  fra.me.meth = LOCATE_parser_prod___ACharExpr___replace_child;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  /* ./parser//parser_prod.nit:6618 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ACharExpr____n_char(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_char", LOCATE_parser_prod, 6618);
+  }
+  fra.me.REG[3] = ATTR_parser_nodes___ACharExpr____n_char(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+    REGB0 = REGB1;
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:6619 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:6620 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 6620);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:6621 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_TChar, ID_TChar)) /*cast TChar*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 6621);
+      }
+      /* ./parser//parser_prod.nit:6622 */
+      ATTR_parser_nodes___ACharExpr____n_char(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:6624 */
+      nit_abort("Aborted", NULL, LOCATE_parser_prod, 6624);
+    }
+    /* ./parser//parser_prod.nit:6626 */
+    goto label1;
+  }
+  label1: while(0);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser_prod___ACharExpr___visit_all(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 6630;
+  fra.me.meth = LOCATE_parser_prod___ACharExpr___visit_all;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:6632 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ACharExpr____n_char(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_char", LOCATE_parser_prod, 6632);
+  }
+  fra.me.REG[0] = ATTR_parser_nodes___ACharExpr____n_char(fra.me.REG[0]);
+  CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser_prod___AStringExpr___empty_init(val_t p0, int* init_table){
+  int itpos233 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_AStringExpr].i;
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  if (init_table[itpos233]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 6636;
+  fra.me.meth = LOCATE_parser_prod___AStringExpr___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos233] = 1;
+  return;
+}
+void parser_prod___AStringExpr___init_astringexpr(val_t p0, val_t p1, int* init_table){
+  int itpos234 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_AStringExpr].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos234]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 6638;
+  fra.me.meth = LOCATE_parser_prod___AStringExpr___init_astringexpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:6642 */
+  CALL_parser_prod___AStringExpr___empty_init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  /* ./parser//parser_prod.nit:6643 */
+  REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Cast failed", NULL, LOCATE_parser_prod, 6643);
+  }
+  ATTR_parser_nodes___AStringExpr____n_string(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./parser//parser_prod.nit:6644 */
+  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+    nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 6644);
+  }
+  CALL_parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  init_table[itpos234] = 1;
+  return;
+}
+void parser_prod___AStringExpr___replace_child(val_t p0, val_t p1, val_t p2){
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 6647;
+  fra.me.meth = LOCATE_parser_prod___AStringExpr___replace_child;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  /* ./parser//parser_prod.nit:6649 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AStringExpr____n_string(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_string", LOCATE_parser_prod, 6649);
+  }
+  fra.me.REG[3] = ATTR_parser_nodes___AStringExpr____n_string(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+    REGB0 = REGB1;
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:6650 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:6651 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 6651);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:6652 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_TString, ID_TString)) /*cast TString*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 6652);
+      }
+      /* ./parser//parser_prod.nit:6653 */
+      ATTR_parser_nodes___AStringExpr____n_string(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:6655 */
+      nit_abort("Aborted", NULL, LOCATE_parser_prod, 6655);
+    }
+    /* ./parser//parser_prod.nit:6657 */
+    goto label1;
+  }
+  label1: while(0);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser_prod___AStringExpr___visit_all(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 6661;
+  fra.me.meth = LOCATE_parser_prod___AStringExpr___visit_all;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:6663 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AStringExpr____n_string(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_string", LOCATE_parser_prod, 6663);
+  }
+  fra.me.REG[0] = ATTR_parser_nodes___AStringExpr____n_string(fra.me.REG[0]);
+  CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser_prod___AStartStringExpr___empty_init(val_t p0, int* init_table){
+  int itpos235 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_AStartStringExpr].i;
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  if (init_table[itpos235]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 6667;
+  fra.me.meth = LOCATE_parser_prod___AStartStringExpr___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos235] = 1;
+  return;
+}
+void parser_prod___AStartStringExpr___init_astartstringexpr(val_t p0, val_t p1, int* init_table){
+  int itpos236 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_AStartStringExpr].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos236]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 6669;
+  fra.me.meth = LOCATE_parser_prod___AStartStringExpr___init_astartstringexpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:6673 */
+  CALL_parser_prod___AStartStringExpr___empty_init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  /* ./parser//parser_prod.nit:6674 */
+  REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Cast failed", NULL, LOCATE_parser_prod, 6674);
+  }
+  ATTR_parser_nodes___AStartStringExpr____n_string(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./parser//parser_prod.nit:6675 */
+  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+    nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 6675);
+  }
+  CALL_parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  init_table[itpos236] = 1;
+  return;
+}
+void parser_prod___AStartStringExpr___replace_child(val_t p0, val_t p1, val_t p2){
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 6678;
+  fra.me.meth = LOCATE_parser_prod___AStartStringExpr___replace_child;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  /* ./parser//parser_prod.nit:6680 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AStartStringExpr____n_string(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_string", LOCATE_parser_prod, 6680);
+  }
+  fra.me.REG[3] = ATTR_parser_nodes___AStartStringExpr____n_string(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+    REGB0 = REGB1;
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:6681 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:6682 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 6682);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:6683 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_TStartString, ID_TStartString)) /*cast TStartString*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 6683);
+      }
+      /* ./parser//parser_prod.nit:6684 */
+      ATTR_parser_nodes___AStartStringExpr____n_string(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:6686 */
+      nit_abort("Aborted", NULL, LOCATE_parser_prod, 6686);
+    }
+    /* ./parser//parser_prod.nit:6688 */
+    goto label1;
+  }
+  label1: while(0);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser_prod___AStartStringExpr___visit_all(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 6692;
+  fra.me.meth = LOCATE_parser_prod___AStartStringExpr___visit_all;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:6694 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AStartStringExpr____n_string(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_string", LOCATE_parser_prod, 6694);
+  }
+  fra.me.REG[0] = ATTR_parser_nodes___AStartStringExpr____n_string(fra.me.REG[0]);
+  CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser_prod___AMidStringExpr___empty_init(val_t p0, int* init_table){
+  int itpos237 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_AMidStringExpr].i;
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  if (init_table[itpos237]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 6698;
+  fra.me.meth = LOCATE_parser_prod___AMidStringExpr___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos237] = 1;
+  return;
+}
+void parser_prod___AMidStringExpr___init_amidstringexpr(val_t p0, val_t p1, int* init_table){
+  int itpos238 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_AMidStringExpr].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos238]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 6700;
+  fra.me.meth = LOCATE_parser_prod___AMidStringExpr___init_amidstringexpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:6704 */
+  CALL_parser_prod___AMidStringExpr___empty_init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  /* ./parser//parser_prod.nit:6705 */
+  REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Cast failed", NULL, LOCATE_parser_prod, 6705);
+  }
+  ATTR_parser_nodes___AMidStringExpr____n_string(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./parser//parser_prod.nit:6706 */
+  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+    nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 6706);
+  }
+  CALL_parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  init_table[itpos238] = 1;
+  return;
+}
+void parser_prod___AMidStringExpr___replace_child(val_t p0, val_t p1, val_t p2){
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 6709;
+  fra.me.meth = LOCATE_parser_prod___AMidStringExpr___replace_child;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  /* ./parser//parser_prod.nit:6711 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AMidStringExpr____n_string(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_string", LOCATE_parser_prod, 6711);
+  }
+  fra.me.REG[3] = ATTR_parser_nodes___AMidStringExpr____n_string(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+    REGB0 = REGB1;
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:6712 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:6713 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 6713);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:6714 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_TMidString, ID_TMidString)) /*cast TMidString*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 6714);
+      }
+      /* ./parser//parser_prod.nit:6715 */
+      ATTR_parser_nodes___AMidStringExpr____n_string(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:6717 */
+      nit_abort("Aborted", NULL, LOCATE_parser_prod, 6717);
+    }
+    /* ./parser//parser_prod.nit:6719 */
+    goto label1;
+  }
+  label1: while(0);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser_prod___AMidStringExpr___visit_all(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 6723;
+  fra.me.meth = LOCATE_parser_prod___AMidStringExpr___visit_all;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:6725 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AMidStringExpr____n_string(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_string", LOCATE_parser_prod, 6725);
+  }
+  fra.me.REG[0] = ATTR_parser_nodes___AMidStringExpr____n_string(fra.me.REG[0]);
+  CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser_prod___AEndStringExpr___empty_init(val_t p0, int* init_table){
+  int itpos239 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_AEndStringExpr].i;
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  if (init_table[itpos239]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 6729;
+  fra.me.meth = LOCATE_parser_prod___AEndStringExpr___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos239] = 1;
+  return;
+}
+void parser_prod___AEndStringExpr___init_aendstringexpr(val_t p0, val_t p1, int* init_table){
+  int itpos240 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_AEndStringExpr].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos240]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 6731;
+  fra.me.meth = LOCATE_parser_prod___AEndStringExpr___init_aendstringexpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:6735 */
+  CALL_parser_prod___AEndStringExpr___empty_init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  /* ./parser//parser_prod.nit:6736 */
+  REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Cast failed", NULL, LOCATE_parser_prod, 6736);
+  }
+  ATTR_parser_nodes___AEndStringExpr____n_string(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./parser//parser_prod.nit:6737 */
+  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+    nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 6737);
+  }
+  CALL_parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  init_table[itpos240] = 1;
+  return;
+}
+void parser_prod___AEndStringExpr___replace_child(val_t p0, val_t p1, val_t p2){
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 6740;
+  fra.me.meth = LOCATE_parser_prod___AEndStringExpr___replace_child;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  /* ./parser//parser_prod.nit:6742 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AEndStringExpr____n_string(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_string", LOCATE_parser_prod, 6742);
+  }
+  fra.me.REG[3] = ATTR_parser_nodes___AEndStringExpr____n_string(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+    REGB0 = REGB1;
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:6743 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:6744 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 6744);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:6745 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_TEndString, ID_TEndString)) /*cast TEndString*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 6745);
+      }
+      /* ./parser//parser_prod.nit:6746 */
+      ATTR_parser_nodes___AEndStringExpr____n_string(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:6748 */
+      nit_abort("Aborted", NULL, LOCATE_parser_prod, 6748);
+    }
+    /* ./parser//parser_prod.nit:6750 */
+    goto label1;
+  }
+  label1: while(0);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser_prod___AEndStringExpr___visit_all(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 6754;
+  fra.me.meth = LOCATE_parser_prod___AEndStringExpr___visit_all;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:6756 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AEndStringExpr____n_string(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_string", LOCATE_parser_prod, 6756);
+  }
+  fra.me.REG[0] = ATTR_parser_nodes___AEndStringExpr____n_string(fra.me.REG[0]);
+  CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser_prod___ASuperstringExpr___empty_init(val_t p0, int* init_table){
+  int itpos241 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ASuperstringExpr].i;
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  if (init_table[itpos241]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 6760;
+  fra.me.meth = LOCATE_parser_prod___ASuperstringExpr___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos241] = 1;
+  return;
+}
+void parser_prod___ASuperstringExpr___init_asuperstringexpr(val_t p0, val_t p1, int* init_table){
+  int itpos242 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ASuperstringExpr].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  if (init_table[itpos242]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 6762;
+  fra.me.meth = LOCATE_parser_prod___ASuperstringExpr___init_asuperstringexpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:6766 */
+  CALL_parser_prod___ASuperstringExpr___empty_init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  CALL_abstract_collection___Collection___iterate(fra.me.REG[1])(fra.me.REG[1], (&(fra.me)), ((fun_t)OC_parser_prod___ASuperstringExpr___init_asuperstringexpr_1));
+  stack_frame_head = fra.me.prev;
+  init_table[itpos242] = 1;
+  return;
+}
+  void OC_parser_prod___ASuperstringExpr___init_asuperstringexpr_1(struct stack_frame_t *closctx, val_t p0, struct stack_frame_t *closctx_param, fun_t clos_fun0){
+    struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+    val_t REGB0;
+    fun_t CREG[1];
+    val_t tmp;
+    /* ./parser//parser_prod.nit:6767 */
+    fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+    fra.me.file = LOCATE_parser_prod;
+    fra.me.line = 0;
+    fra.me.meth = LOCATE_parser_prod___ASuperstringExpr___init_asuperstringexpr;
+    fra.me.has_broke = 0;
+    fra.me.REG_size = 2;
+    fra.me.REG[0] = NIT_NULL;
+    fra.me.REG[1] = NIT_NULL;
+    fra.me.closure_ctx = closctx_param;
+    fra.me.closure_funs = CREG;
+    fra.me.REG[0] = p0;
+    CREG[0] = clos_fun0;
+    /* ./parser//parser_prod.nit:6768 */
+    REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[0], COLOR_AExpr, ID_AExpr)) /*cast AExpr*/;
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      nit_abort("Assert failed", NULL, LOCATE_parser_prod, 6768);
+    }
+    /* ./parser//parser_prod.nit:6769 */
+    REGB0 = TAG_Bool(ATTR_parser_nodes___ASuperstringExpr____n_exprs(closctx->REG[0])!=NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      nit_abort("Uninitialized attribute %s", "_n_exprs", LOCATE_parser_prod, 6769);
+    }
+    fra.me.REG[1] = ATTR_parser_nodes___ASuperstringExpr____n_exprs(closctx->REG[0]);
+    CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+    /* ./parser//parser_prod.nit:6770 */
+    CALL_parser_prod___ANode___parent__eq(fra.me.REG[0])(fra.me.REG[0], closctx->REG[0]);
+    stack_frame_head = fra.me.prev;
+    return;
+  }
+void parser_prod___ASuperstringExpr___replace_child(val_t p0, val_t p1, val_t p2){
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t REGB2;
+  val_t REGB3;
+  val_t REGB4;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 6774;
+  fra.me.meth = LOCATE_parser_prod___ASuperstringExpr___replace_child;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  /* ./parser//parser_prod.nit:6776 */
+  REGB0 = TAG_Int(0);
+  REGB1 = TAG_Bool(ATTR_parser_nodes___ASuperstringExpr____n_exprs(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB1)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_exprs", LOCATE_parser_prod, 6776);
+  }
+  fra.me.REG[3] = ATTR_parser_nodes___ASuperstringExpr____n_exprs(fra.me.REG[0]);
+  REGB1 = CALL_abstract_collection___Collection___length(fra.me.REG[3])(fra.me.REG[3]);
+  /* ./../lib/standard//kernel.nit:332 */
+  while(1) {
+    /* ./../lib/standard//kernel.nit:212 */
+    REGB2 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
+    /* ./../lib/standard//kernel.nit:332 */
+    if (UNTAG_Bool(REGB2)) {
+      /* ./parser//parser_prod.nit:6776 */
+      REGB2 = REGB0;
+      /* ./parser//parser_prod.nit:6777 */
+      REGB3 = TAG_Bool(ATTR_parser_nodes___ASuperstringExpr____n_exprs(fra.me.REG[0])!=NIT_NULL);
+      if (UNTAG_Bool(REGB3)) {
+      } else {
+        nit_abort("Uninitialized attribute %s", "_n_exprs", LOCATE_parser_prod, 6777);
+      }
+      fra.me.REG[3] = ATTR_parser_nodes___ASuperstringExpr____n_exprs(fra.me.REG[0]);
+      fra.me.REG[3] = CALL_abstract_collection___MapRead_____bra(fra.me.REG[3])(fra.me.REG[3], REGB2);
+      REGB3 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
+      if (UNTAG_Bool(REGB3)) {
+      } else {
+        REGB4 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+        if (UNTAG_Bool(REGB4)) {
+          REGB4 = TAG_Bool(false);
+          REGB3 = REGB4;
+        } else {
+          REGB4 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+          REGB3 = REGB4;
+        }
+      }
+      if (UNTAG_Bool(REGB3)) {
+        /* ./parser//parser_prod.nit:6778 */
+        REGB3 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+        if (UNTAG_Bool(REGB3)) {
+        } else {
+          REGB4 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+          if (UNTAG_Bool(REGB4)) {
+            REGB4 = TAG_Bool(false);
+            REGB3 = REGB4;
+          } else {
+            REGB4 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+            REGB3 = REGB4;
+          }
+        }
+        REGB3 = TAG_Bool(!UNTAG_Bool(REGB3));
+        if (UNTAG_Bool(REGB3)) {
+          /* ./parser//parser_prod.nit:6779 */
+          REGB3 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_AExpr, ID_AExpr)) /*cast AExpr*/;
+          if (UNTAG_Bool(REGB3)) {
+          } else {
+            nit_abort("Assert failed", NULL, LOCATE_parser_prod, 6779);
+          }
+          /* ./parser//parser_prod.nit:6780 */
+          REGB3 = TAG_Bool(ATTR_parser_nodes___ASuperstringExpr____n_exprs(fra.me.REG[0])!=NIT_NULL);
+          if (UNTAG_Bool(REGB3)) {
+          } else {
+            nit_abort("Uninitialized attribute %s", "_n_exprs", LOCATE_parser_prod, 6780);
+          }
+          fra.me.REG[3] = ATTR_parser_nodes___ASuperstringExpr____n_exprs(fra.me.REG[0]);
+          CALL_abstract_collection___Map_____braeq(fra.me.REG[3])(fra.me.REG[3], REGB2, fra.me.REG[2]);
+          /* ./parser//parser_prod.nit:6781 */
+          REGB3 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+          if (UNTAG_Bool(REGB3)) {
+            nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 6781);
+          }
+          CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+        } else {
+          /* ./parser//parser_prod.nit:6783 */
+          REGB3 = TAG_Bool(ATTR_parser_nodes___ASuperstringExpr____n_exprs(fra.me.REG[0])!=NIT_NULL);
+          if (UNTAG_Bool(REGB3)) {
+          } else {
+            nit_abort("Uninitialized attribute %s", "_n_exprs", LOCATE_parser_prod, 6783);
+          }
+          fra.me.REG[3] = ATTR_parser_nodes___ASuperstringExpr____n_exprs(fra.me.REG[0]);
+          CALL_abstract_collection___Map___remove_at(fra.me.REG[3])(fra.me.REG[3], REGB2);
+        }
+        /* ./parser//parser_prod.nit:6785 */
+        goto label1;
+      }
+      /* ./../lib/standard//kernel.nit:334 */
+      REGB2 = TAG_Int(1);
+      /* ./../lib/standard//kernel.nit:215 */
+      REGB2 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB2));
+      /* ./../lib/standard//kernel.nit:334 */
+      REGB0 = REGB2;
+    } else {
+      /* ./../lib/standard//kernel.nit:332 */
+      goto label2;
+    }
+  }
+  label2: while(0);
+  label1: while(0);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser_prod___ASuperstringExpr___visit_all(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 6790;
+  fra.me.meth = LOCATE_parser_prod___ASuperstringExpr___visit_all;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:6792 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ASuperstringExpr____n_exprs(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_exprs", LOCATE_parser_prod, 6792);
+  }
+  fra.me.REG[0] = ATTR_parser_nodes___ASuperstringExpr____n_exprs(fra.me.REG[0]);
+  CALL_abstract_collection___Collection___iterate(fra.me.REG[0])(fra.me.REG[0], (&(fra.me)), ((fun_t)OC_parser_prod___ASuperstringExpr___visit_all_1));
+  stack_frame_head = fra.me.prev;
+  return;
+}
+  void OC_parser_prod___ASuperstringExpr___visit_all_1(struct stack_frame_t *closctx, val_t p0, struct stack_frame_t *closctx_param, fun_t clos_fun0){
+    struct {struct stack_frame_t me;} fra;
+    fun_t CREG[1];
+    val_t tmp;
+    fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+    fra.me.file = LOCATE_parser_prod;
+    fra.me.line = 0;
+    fra.me.meth = LOCATE_parser_prod___ASuperstringExpr___visit_all;
+    fra.me.has_broke = 0;
+    fra.me.REG_size = 1;
+    fra.me.REG[0] = NIT_NULL;
+    fra.me.closure_ctx = closctx_param;
+    fra.me.closure_funs = CREG;
+    fra.me.REG[0] = p0;
+    CREG[0] = clos_fun0;
+    /* ./parser//parser_prod.nit:6793 */
+    CALL_parser_prod___Visitor___enter_visit(closctx->REG[1])(closctx->REG[1], fra.me.REG[0]);
+    stack_frame_head = fra.me.prev;
+    return;
+  }
+void parser_prod___AParExpr___empty_init(val_t p0, int* init_table){
+  int itpos243 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_AParExpr].i;
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  if (init_table[itpos243]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 6798;
+  fra.me.meth = LOCATE_parser_prod___AParExpr___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos243] = 1;
+  return;
+}
+void parser_prod___AParExpr___init_aparexpr(val_t p0, val_t p1, int* init_table){
+  int itpos244 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_AParExpr].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos244]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 6800;
+  fra.me.meth = LOCATE_parser_prod___AParExpr___init_aparexpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:6804 */
+  CALL_parser_prod___AParExpr___empty_init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  /* ./parser//parser_prod.nit:6805 */
+  REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Cast failed", NULL, LOCATE_parser_prod, 6805);
+  }
+  ATTR_parser_nodes___AProxyExpr____n_expr(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./parser//parser_prod.nit:6806 */
+  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+    nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 6806);
+  }
+  CALL_parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  init_table[itpos244] = 1;
+  return;
+}
+void parser_prod___AParExpr___replace_child(val_t p0, val_t p1, val_t p2){
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 6809;
+  fra.me.meth = LOCATE_parser_prod___AParExpr___replace_child;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  /* ./parser//parser_prod.nit:6811 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AProxyExpr____n_expr(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser_prod, 6811);
+  }
+  fra.me.REG[3] = ATTR_parser_nodes___AProxyExpr____n_expr(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+    REGB0 = REGB1;
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:6812 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:6813 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 6813);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:6814 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_AExpr, ID_AExpr)) /*cast AExpr*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 6814);
+      }
+      /* ./parser//parser_prod.nit:6815 */
+      ATTR_parser_nodes___AProxyExpr____n_expr(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:6817 */
+      nit_abort("Aborted", NULL, LOCATE_parser_prod, 6817);
+    }
+    /* ./parser//parser_prod.nit:6819 */
+    goto label1;
+  }
+  label1: while(0);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser_prod___AParExpr___visit_all(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 6823;
+  fra.me.meth = LOCATE_parser_prod___AParExpr___visit_all;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:6825 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AProxyExpr____n_expr(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser_prod, 6825);
+  }
+  fra.me.REG[0] = ATTR_parser_nodes___AProxyExpr____n_expr(fra.me.REG[0]);
+  CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser_prod___AAsCastExpr___empty_init(val_t p0, int* init_table){
+  int itpos245 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_AAsCastExpr].i;
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  if (init_table[itpos245]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 6829;
+  fra.me.meth = LOCATE_parser_prod___AAsCastExpr___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos245] = 1;
+  return;
+}
+void parser_prod___AAsCastExpr___init_aascastexpr(val_t p0, val_t p1, val_t p2, val_t p3, int* init_table){
+  int itpos246 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_AAsCastExpr].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos246]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 6831;
+  fra.me.meth = LOCATE_parser_prod___AAsCastExpr___init_aascastexpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  fra.me.REG[3] = p3;
+  /* ./parser//parser_prod.nit:6837 */
+  CALL_parser_prod___AAsCastExpr___empty_init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  /* ./parser//parser_prod.nit:6838 */
+  REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Cast failed", NULL, LOCATE_parser_prod, 6838);
+  }
+  ATTR_parser_nodes___AAsCastExpr____n_expr(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./parser//parser_prod.nit:6839 */
+  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+    nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 6839);
+  }
+  CALL_parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  /* ./parser//parser_prod.nit:6840 */
+  REGB0 = TAG_Bool(fra.me.REG[2]!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Cast failed", NULL, LOCATE_parser_prod, 6840);
+  }
+  ATTR_parser_nodes___AAsCastExpr____n_kwas(fra.me.REG[0]) = fra.me.REG[2];
+  /* ./parser//parser_prod.nit:6841 */
+  REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+    nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 6841);
+  }
+  CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+  /* ./parser//parser_prod.nit:6842 */
+  REGB0 = TAG_Bool(fra.me.REG[3]!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Cast failed", NULL, LOCATE_parser_prod, 6842);
+  }
+  ATTR_parser_nodes___AAsCastExpr____n_type(fra.me.REG[0]) = fra.me.REG[3];
+  /* ./parser//parser_prod.nit:6843 */
+  REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+    nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 6843);
+  }
+  CALL_parser_prod___ANode___parent__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  init_table[itpos246] = 1;
+  return;
+}
+void parser_prod___AAsCastExpr___replace_child(val_t p0, val_t p1, val_t p2){
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 6846;
+  fra.me.meth = LOCATE_parser_prod___AAsCastExpr___replace_child;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  /* ./parser//parser_prod.nit:6848 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AAsCastExpr____n_expr(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser_prod, 6848);
+  }
+  fra.me.REG[3] = ATTR_parser_nodes___AAsCastExpr____n_expr(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+    REGB0 = REGB1;
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:6849 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:6850 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 6850);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:6851 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_AExpr, ID_AExpr)) /*cast AExpr*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 6851);
+      }
+      /* ./parser//parser_prod.nit:6852 */
+      ATTR_parser_nodes___AAsCastExpr____n_expr(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:6854 */
+      nit_abort("Aborted", NULL, LOCATE_parser_prod, 6854);
+    }
+    /* ./parser//parser_prod.nit:6856 */
+    goto label1;
+  }
+  /* ./parser//parser_prod.nit:6858 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AAsCastExpr____n_kwas(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_kwas", LOCATE_parser_prod, 6858);
+  }
+  fra.me.REG[3] = ATTR_parser_nodes___AAsCastExpr____n_kwas(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+    REGB0 = REGB1;
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:6859 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:6860 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 6860);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:6861 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_TKwas, ID_TKwas)) /*cast TKwas*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 6861);
+      }
+      /* ./parser//parser_prod.nit:6862 */
+      ATTR_parser_nodes___AAsCastExpr____n_kwas(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:6864 */
+      nit_abort("Aborted", NULL, LOCATE_parser_prod, 6864);
+    }
+    /* ./parser//parser_prod.nit:6866 */
+    goto label1;
+  }
+  /* ./parser//parser_prod.nit:6868 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AAsCastExpr____n_type(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_type", LOCATE_parser_prod, 6868);
+  }
+  fra.me.REG[3] = ATTR_parser_nodes___AAsCastExpr____n_type(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+    REGB0 = REGB1;
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:6869 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:6870 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 6870);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:6871 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_AType, ID_AType)) /*cast AType*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 6871);
+      }
+      /* ./parser//parser_prod.nit:6872 */
+      ATTR_parser_nodes___AAsCastExpr____n_type(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:6874 */
+      nit_abort("Aborted", NULL, LOCATE_parser_prod, 6874);
+    }
+    /* ./parser//parser_prod.nit:6876 */
+    goto label1;
+  }
+  label1: while(0);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser_prod___AAsCastExpr___visit_all(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 6880;
+  fra.me.meth = LOCATE_parser_prod___AAsCastExpr___visit_all;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:6882 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AAsCastExpr____n_expr(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser_prod, 6882);
+  }
+  fra.me.REG[2] = ATTR_parser_nodes___AAsCastExpr____n_expr(fra.me.REG[0]);
+  CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser_prod.nit:6883 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AAsCastExpr____n_kwas(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_kwas", LOCATE_parser_prod, 6883);
+  }
+  fra.me.REG[2] = ATTR_parser_nodes___AAsCastExpr____n_kwas(fra.me.REG[0]);
+  CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser_prod.nit:6884 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AAsCastExpr____n_type(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_type", LOCATE_parser_prod, 6884);
+  }
+  fra.me.REG[0] = ATTR_parser_nodes___AAsCastExpr____n_type(fra.me.REG[0]);
+  CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser_prod___AAsNotnullExpr___empty_init(val_t p0, int* init_table){
+  int itpos247 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_AAsNotnullExpr].i;
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  if (init_table[itpos247]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 6888;
+  fra.me.meth = LOCATE_parser_prod___AAsNotnullExpr___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos247] = 1;
+  return;
+}
+void parser_prod___AAsNotnullExpr___init_aasnotnullexpr(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4, int* init_table){
+  int itpos248 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_AAsNotnullExpr].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos248]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 6890;
+  fra.me.meth = LOCATE_parser_prod___AAsNotnullExpr___init_aasnotnullexpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  fra.me.REG[3] = p3;
+  fra.me.REG[4] = p4;
+  /* ./parser//parser_prod.nit:6897 */
+  CALL_parser_prod___AAsNotnullExpr___empty_init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  /* ./parser//parser_prod.nit:6898 */
+  REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Cast failed", NULL, LOCATE_parser_prod, 6898);
+  }
+  ATTR_parser_nodes___AAsNotnullExpr____n_expr(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./parser//parser_prod.nit:6899 */
+  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+    nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 6899);
+  }
+  CALL_parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  /* ./parser//parser_prod.nit:6900 */
+  REGB0 = TAG_Bool(fra.me.REG[2]!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Cast failed", NULL, LOCATE_parser_prod, 6900);
+  }
+  ATTR_parser_nodes___AAsNotnullExpr____n_kwas(fra.me.REG[0]) = fra.me.REG[2];
+  /* ./parser//parser_prod.nit:6901 */
+  REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+    nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 6901);
+  }
+  CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+  /* ./parser//parser_prod.nit:6902 */
+  REGB0 = TAG_Bool(fra.me.REG[3]!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Cast failed", NULL, LOCATE_parser_prod, 6902);
+  }
+  ATTR_parser_nodes___AAsNotnullExpr____n_kwnot(fra.me.REG[0]) = fra.me.REG[3];
+  /* ./parser//parser_prod.nit:6903 */
+  REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+    nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 6903);
+  }
+  CALL_parser_prod___ANode___parent__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[0]);
+  /* ./parser//parser_prod.nit:6904 */
+  REGB0 = TAG_Bool(fra.me.REG[4]!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Cast failed", NULL, LOCATE_parser_prod, 6904);
+  }
+  ATTR_parser_nodes___AAsNotnullExpr____n_kwnull(fra.me.REG[0]) = fra.me.REG[4];
+  /* ./parser//parser_prod.nit:6905 */
+  REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+    nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 6905);
+  }
+  CALL_parser_prod___ANode___parent__eq(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  init_table[itpos248] = 1;
+  return;
+}
+void parser_prod___AAsNotnullExpr___replace_child(val_t p0, val_t p1, val_t p2){
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 6908;
+  fra.me.meth = LOCATE_parser_prod___AAsNotnullExpr___replace_child;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  /* ./parser//parser_prod.nit:6910 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AAsNotnullExpr____n_expr(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser_prod, 6910);
+  }
+  fra.me.REG[3] = ATTR_parser_nodes___AAsNotnullExpr____n_expr(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+    REGB0 = REGB1;
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:6911 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:6912 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 6912);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:6913 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_AExpr, ID_AExpr)) /*cast AExpr*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 6913);
+      }
+      /* ./parser//parser_prod.nit:6914 */
+      ATTR_parser_nodes___AAsNotnullExpr____n_expr(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:6916 */
+      nit_abort("Aborted", NULL, LOCATE_parser_prod, 6916);
+    }
+    /* ./parser//parser_prod.nit:6918 */
+    goto label1;
+  }
+  /* ./parser//parser_prod.nit:6920 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AAsNotnullExpr____n_kwas(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_kwas", LOCATE_parser_prod, 6920);
+  }
+  fra.me.REG[3] = ATTR_parser_nodes___AAsNotnullExpr____n_kwas(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+    REGB0 = REGB1;
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:6921 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:6922 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 6922);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:6923 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_TKwas, ID_TKwas)) /*cast TKwas*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 6923);
+      }
+      /* ./parser//parser_prod.nit:6924 */
+      ATTR_parser_nodes___AAsNotnullExpr____n_kwas(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:6926 */
+      nit_abort("Aborted", NULL, LOCATE_parser_prod, 6926);
+    }
+    /* ./parser//parser_prod.nit:6928 */
+    goto label1;
+  }
+  /* ./parser//parser_prod.nit:6930 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AAsNotnullExpr____n_kwnot(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_kwnot", LOCATE_parser_prod, 6930);
+  }
+  fra.me.REG[3] = ATTR_parser_nodes___AAsNotnullExpr____n_kwnot(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+    REGB0 = REGB1;
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:6931 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:6932 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 6932);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:6933 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_TKwnot, ID_TKwnot)) /*cast TKwnot*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 6933);
+      }
+      /* ./parser//parser_prod.nit:6934 */
+      ATTR_parser_nodes___AAsNotnullExpr____n_kwnot(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:6936 */
+      nit_abort("Aborted", NULL, LOCATE_parser_prod, 6936);
+    }
+    /* ./parser//parser_prod.nit:6938 */
+    goto label1;
+  }
+  /* ./parser//parser_prod.nit:6940 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AAsNotnullExpr____n_kwnull(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_kwnull", LOCATE_parser_prod, 6940);
+  }
+  fra.me.REG[3] = ATTR_parser_nodes___AAsNotnullExpr____n_kwnull(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+    REGB0 = REGB1;
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:6941 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:6942 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 6942);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:6943 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_TKwnull, ID_TKwnull)) /*cast TKwnull*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 6943);
+      }
+      /* ./parser//parser_prod.nit:6944 */
+      ATTR_parser_nodes___AAsNotnullExpr____n_kwnull(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:6946 */
+      nit_abort("Aborted", NULL, LOCATE_parser_prod, 6946);
+    }
+    /* ./parser//parser_prod.nit:6948 */
+    goto label1;
+  }
+  label1: while(0);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser_prod___AAsNotnullExpr___visit_all(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 6952;
+  fra.me.meth = LOCATE_parser_prod___AAsNotnullExpr___visit_all;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:6954 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AAsNotnullExpr____n_expr(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser_prod, 6954);
+  }
+  fra.me.REG[2] = ATTR_parser_nodes___AAsNotnullExpr____n_expr(fra.me.REG[0]);
+  CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser_prod.nit:6955 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AAsNotnullExpr____n_kwas(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_kwas", LOCATE_parser_prod, 6955);
+  }
+  fra.me.REG[2] = ATTR_parser_nodes___AAsNotnullExpr____n_kwas(fra.me.REG[0]);
+  CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser_prod.nit:6956 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AAsNotnullExpr____n_kwnot(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_kwnot", LOCATE_parser_prod, 6956);
+  }
+  fra.me.REG[2] = ATTR_parser_nodes___AAsNotnullExpr____n_kwnot(fra.me.REG[0]);
+  CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser_prod.nit:6957 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AAsNotnullExpr____n_kwnull(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_kwnull", LOCATE_parser_prod, 6957);
+  }
+  fra.me.REG[0] = ATTR_parser_nodes___AAsNotnullExpr____n_kwnull(fra.me.REG[0]);
+  CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser_prod___AIssetAttrExpr___empty_init(val_t p0, int* init_table){
+  int itpos249 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_AIssetAttrExpr].i;
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  if (init_table[itpos249]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 6961;
+  fra.me.meth = LOCATE_parser_prod___AIssetAttrExpr___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos249] = 1;
+  return;
+}
+void parser_prod___AIssetAttrExpr___init_aissetattrexpr(val_t p0, val_t p1, val_t p2, val_t p3, int* init_table){
+  int itpos250 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_AIssetAttrExpr].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos250]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 6963;
+  fra.me.meth = LOCATE_parser_prod___AIssetAttrExpr___init_aissetattrexpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  fra.me.REG[3] = p3;
+  /* ./parser//parser_prod.nit:6969 */
+  CALL_parser_prod___AIssetAttrExpr___empty_init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  /* ./parser//parser_prod.nit:6970 */
+  REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Cast failed", NULL, LOCATE_parser_prod, 6970);
+  }
+  ATTR_parser_nodes___AIssetAttrExpr____n_kwisset(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./parser//parser_prod.nit:6971 */
+  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+    nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 6971);
+  }
+  CALL_parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  /* ./parser//parser_prod.nit:6972 */
+  REGB0 = TAG_Bool(fra.me.REG[2]!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Cast failed", NULL, LOCATE_parser_prod, 6972);
+  }
+  ATTR_parser_nodes___AAttrFormExpr____n_expr(fra.me.REG[0]) = fra.me.REG[2];
+  /* ./parser//parser_prod.nit:6973 */
+  REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+    nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 6973);
+  }
+  CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+  /* ./parser//parser_prod.nit:6974 */
+  REGB0 = TAG_Bool(fra.me.REG[3]!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Cast failed", NULL, LOCATE_parser_prod, 6974);
+  }
+  ATTR_parser_nodes___AAttrFormExpr____n_id(fra.me.REG[0]) = fra.me.REG[3];
+  /* ./parser//parser_prod.nit:6975 */
+  REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+    nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 6975);
+  }
+  CALL_parser_prod___ANode___parent__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  init_table[itpos250] = 1;
+  return;
+}
+void parser_prod___AIssetAttrExpr___replace_child(val_t p0, val_t p1, val_t p2){
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 6978;
+  fra.me.meth = LOCATE_parser_prod___AIssetAttrExpr___replace_child;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  /* ./parser//parser_prod.nit:6980 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AIssetAttrExpr____n_kwisset(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_kwisset", LOCATE_parser_prod, 6980);
+  }
+  fra.me.REG[3] = ATTR_parser_nodes___AIssetAttrExpr____n_kwisset(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+    REGB0 = REGB1;
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:6981 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:6982 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 6982);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:6983 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_TKwisset, ID_TKwisset)) /*cast TKwisset*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 6983);
+      }
+      /* ./parser//parser_prod.nit:6984 */
+      ATTR_parser_nodes___AIssetAttrExpr____n_kwisset(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:6986 */
+      nit_abort("Aborted", NULL, LOCATE_parser_prod, 6986);
+    }
+    /* ./parser//parser_prod.nit:6988 */
+    goto label1;
+  }
+  /* ./parser//parser_prod.nit:6990 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AAttrFormExpr____n_expr(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser_prod, 6990);
+  }
+  fra.me.REG[3] = ATTR_parser_nodes___AAttrFormExpr____n_expr(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+    REGB0 = REGB1;
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:6991 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:6992 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 6992);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:6993 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_AExpr, ID_AExpr)) /*cast AExpr*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 6993);
+      }
+      /* ./parser//parser_prod.nit:6994 */
+      ATTR_parser_nodes___AAttrFormExpr____n_expr(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:6996 */
+      nit_abort("Aborted", NULL, LOCATE_parser_prod, 6996);
+    }
+    /* ./parser//parser_prod.nit:6998 */
+    goto label1;
+  }
+  /* ./parser//parser_prod.nit:7000 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AAttrFormExpr____n_id(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_id", LOCATE_parser_prod, 7000);
+  }
+  fra.me.REG[3] = ATTR_parser_nodes___AAttrFormExpr____n_id(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+    REGB0 = REGB1;
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:7001 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:7002 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 7002);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:7003 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_TAttrid, ID_TAttrid)) /*cast TAttrid*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 7003);
+      }
+      /* ./parser//parser_prod.nit:7004 */
+      ATTR_parser_nodes___AAttrFormExpr____n_id(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:7006 */
+      nit_abort("Aborted", NULL, LOCATE_parser_prod, 7006);
+    }
+    /* ./parser//parser_prod.nit:7008 */
+    goto label1;
+  }
+  label1: while(0);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser_prod___AIssetAttrExpr___visit_all(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 7012;
+  fra.me.meth = LOCATE_parser_prod___AIssetAttrExpr___visit_all;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:7014 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AIssetAttrExpr____n_kwisset(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_kwisset", LOCATE_parser_prod, 7014);
+  }
+  fra.me.REG[2] = ATTR_parser_nodes___AIssetAttrExpr____n_kwisset(fra.me.REG[0]);
+  CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser_prod.nit:7015 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AAttrFormExpr____n_expr(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser_prod, 7015);
+  }
+  fra.me.REG[2] = ATTR_parser_nodes___AAttrFormExpr____n_expr(fra.me.REG[0]);
+  CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser_prod.nit:7016 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AAttrFormExpr____n_id(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_id", LOCATE_parser_prod, 7016);
+  }
+  fra.me.REG[0] = ATTR_parser_nodes___AAttrFormExpr____n_id(fra.me.REG[0]);
+  CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser_prod___APlusAssignOp___empty_init(val_t p0, int* init_table){
+  int itpos251 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_APlusAssignOp].i;
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  if (init_table[itpos251]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 7020;
+  fra.me.meth = LOCATE_parser_prod___APlusAssignOp___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos251] = 1;
+  return;
+}
+void parser_prod___APlusAssignOp___init_aplusassignop(val_t p0, val_t p1, int* init_table){
+  int itpos252 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_APlusAssignOp].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos252]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 7022;
+  fra.me.meth = LOCATE_parser_prod___APlusAssignOp___init_aplusassignop;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:7026 */
+  CALL_parser_prod___APlusAssignOp___empty_init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  /* ./parser//parser_prod.nit:7027 */
+  REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Cast failed", NULL, LOCATE_parser_prod, 7027);
+  }
+  ATTR_parser_nodes___APlusAssignOp____n_pluseq(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./parser//parser_prod.nit:7028 */
+  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+    nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 7028);
+  }
+  CALL_parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  init_table[itpos252] = 1;
+  return;
+}
+void parser_prod___APlusAssignOp___replace_child(val_t p0, val_t p1, val_t p2){
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 7031;
+  fra.me.meth = LOCATE_parser_prod___APlusAssignOp___replace_child;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  /* ./parser//parser_prod.nit:7033 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___APlusAssignOp____n_pluseq(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_pluseq", LOCATE_parser_prod, 7033);
+  }
+  fra.me.REG[3] = ATTR_parser_nodes___APlusAssignOp____n_pluseq(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+    REGB0 = REGB1;
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:7034 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:7035 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 7035);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:7036 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_TPluseq, ID_TPluseq)) /*cast TPluseq*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 7036);
+      }
+      /* ./parser//parser_prod.nit:7037 */
+      ATTR_parser_nodes___APlusAssignOp____n_pluseq(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:7039 */
+      nit_abort("Aborted", NULL, LOCATE_parser_prod, 7039);
+    }
+    /* ./parser//parser_prod.nit:7041 */
+    goto label1;
+  }
+  label1: while(0);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser_prod___APlusAssignOp___visit_all(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 7045;
+  fra.me.meth = LOCATE_parser_prod___APlusAssignOp___visit_all;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:7047 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___APlusAssignOp____n_pluseq(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_pluseq", LOCATE_parser_prod, 7047);
+  }
+  fra.me.REG[0] = ATTR_parser_nodes___APlusAssignOp____n_pluseq(fra.me.REG[0]);
+  CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser_prod___AMinusAssignOp___empty_init(val_t p0, int* init_table){
+  int itpos253 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_AMinusAssignOp].i;
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  if (init_table[itpos253]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 7051;
+  fra.me.meth = LOCATE_parser_prod___AMinusAssignOp___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos253] = 1;
+  return;
+}
+void parser_prod___AMinusAssignOp___init_aminusassignop(val_t p0, val_t p1, int* init_table){
+  int itpos254 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_AMinusAssignOp].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos254]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 7053;
+  fra.me.meth = LOCATE_parser_prod___AMinusAssignOp___init_aminusassignop;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:7057 */
+  CALL_parser_prod___AMinusAssignOp___empty_init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  /* ./parser//parser_prod.nit:7058 */
+  REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Cast failed", NULL, LOCATE_parser_prod, 7058);
+  }
+  ATTR_parser_nodes___AMinusAssignOp____n_minuseq(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./parser//parser_prod.nit:7059 */
+  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+    nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 7059);
+  }
+  CALL_parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  init_table[itpos254] = 1;
+  return;
+}
+void parser_prod___AMinusAssignOp___replace_child(val_t p0, val_t p1, val_t p2){
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 7062;
+  fra.me.meth = LOCATE_parser_prod___AMinusAssignOp___replace_child;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  /* ./parser//parser_prod.nit:7064 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AMinusAssignOp____n_minuseq(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_minuseq", LOCATE_parser_prod, 7064);
+  }
+  fra.me.REG[3] = ATTR_parser_nodes___AMinusAssignOp____n_minuseq(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+    REGB0 = REGB1;
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:7065 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:7066 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 7066);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:7067 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_TMinuseq, ID_TMinuseq)) /*cast TMinuseq*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 7067);
+      }
+      /* ./parser//parser_prod.nit:7068 */
+      ATTR_parser_nodes___AMinusAssignOp____n_minuseq(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:7070 */
+      nit_abort("Aborted", NULL, LOCATE_parser_prod, 7070);
+    }
+    /* ./parser//parser_prod.nit:7072 */
+    goto label1;
+  }
+  label1: while(0);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser_prod___AMinusAssignOp___visit_all(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 7076;
+  fra.me.meth = LOCATE_parser_prod___AMinusAssignOp___visit_all;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:7078 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AMinusAssignOp____n_minuseq(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_minuseq", LOCATE_parser_prod, 7078);
+  }
+  fra.me.REG[0] = ATTR_parser_nodes___AMinusAssignOp____n_minuseq(fra.me.REG[0]);
+  CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser_prod___AClosureDef___empty_init(val_t p0, int* init_table){
+  int itpos255 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_AClosureDef].i;
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  if (init_table[itpos255]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 7082;
+  fra.me.meth = LOCATE_parser_prod___AClosureDef___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos255] = 1;
+  return;
+}
+void parser_prod___AClosureDef___init_aclosuredef(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4, val_t p5, val_t p6, int* init_table){
+  int itpos256 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_AClosureDef].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[6];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  if (init_table[itpos256]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 7084;
+  fra.me.meth = LOCATE_parser_prod___AClosureDef___init_aclosuredef;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 7;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  fra.me.REG[3] = p3;
+  fra.me.REG[4] = p4;
+  fra.me.REG[5] = p5;
+  fra.me.REG[6] = p6;
+  /* ./parser//parser_prod.nit:7093 */
+  CALL_parser_prod___AClosureDef___empty_init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  /* ./parser//parser_prod.nit:7094 */
+  REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Cast failed", NULL, LOCATE_parser_prod, 7094);
+  }
+  ATTR_parser_nodes___AClosureDef____n_bang(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./parser//parser_prod.nit:7095 */
+  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+    nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 7095);
+  }
+  CALL_parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  /* ./parser//parser_prod.nit:7096 */
+  REGB0 = TAG_Bool(fra.me.REG[2]!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Cast failed", NULL, LOCATE_parser_prod, 7096);
+  }
+  ATTR_parser_nodes___AClosureDef____n_id(fra.me.REG[0]) = fra.me.REG[2];
+  /* ./parser//parser_prod.nit:7097 */
+  REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+    nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 7097);
+  }
+  CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+  CALL_abstract_collection___Collection___iterate(fra.me.REG[3])(fra.me.REG[3], (&(fra.me)), ((fun_t)OC_parser_prod___AClosureDef___init_aclosuredef_1));
+  /* ./parser//parser_prod.nit:7103 */
+  ATTR_parser_nodes___AClosureDef____n_kwdo(fra.me.REG[0]) = fra.me.REG[4];
+  /* ./parser//parser_prod.nit:7104 */
+  REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:7105 */
+    REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+      nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 7105);
+    }
+    CALL_parser_prod___ANode___parent__eq(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[0]);
+  }
+  /* ./parser//parser_prod.nit:7107 */
+  ATTR_parser_nodes___AClosureDef____n_expr(fra.me.REG[0]) = fra.me.REG[5];
+  /* ./parser//parser_prod.nit:7108 */
+  REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[5])(fra.me.REG[5], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:7109 */
+    REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+      nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 7109);
+    }
+    CALL_parser_prod___ANode___parent__eq(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[0]);
+  }
+  /* ./parser//parser_prod.nit:7111 */
+  ATTR_parser_nodes___ALabelable____n_label(fra.me.REG[0]) = fra.me.REG[6];
+  /* ./parser//parser_prod.nit:7112 */
+  REGB0 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[6])(fra.me.REG[6], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:7113 */
+    REGB0 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+      nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 7113);
+    }
+    CALL_parser_prod___ANode___parent__eq(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[0]);
+  }
+  stack_frame_head = fra.me.prev;
+  init_table[itpos256] = 1;
+  return;
+}
+  void OC_parser_prod___AClosureDef___init_aclosuredef_1(struct stack_frame_t *closctx, val_t p0, struct stack_frame_t *closctx_param, fun_t clos_fun0){
+    struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+    val_t REGB0;
+    fun_t CREG[1];
+    val_t tmp;
+    /* ./parser//parser_prod.nit:7098 */
+    fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+    fra.me.file = LOCATE_parser_prod;
+    fra.me.line = 0;
+    fra.me.meth = LOCATE_parser_prod___AClosureDef___init_aclosuredef;
+    fra.me.has_broke = 0;
+    fra.me.REG_size = 2;
+    fra.me.REG[0] = NIT_NULL;
+    fra.me.REG[1] = NIT_NULL;
+    fra.me.closure_ctx = closctx_param;
+    fra.me.closure_funs = CREG;
+    fra.me.REG[0] = p0;
+    CREG[0] = clos_fun0;
+    /* ./parser//parser_prod.nit:7099 */
+    REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[0], COLOR_TId, ID_TId)) /*cast TId*/;
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      nit_abort("Assert failed", NULL, LOCATE_parser_prod, 7099);
+    }
+    /* ./parser//parser_prod.nit:7100 */
+    REGB0 = TAG_Bool(ATTR_parser_nodes___AClosureDef____n_ids(closctx->REG[0])!=NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      nit_abort("Uninitialized attribute %s", "_n_ids", LOCATE_parser_prod, 7100);
+    }
+    fra.me.REG[1] = ATTR_parser_nodes___AClosureDef____n_ids(closctx->REG[0]);
+    CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+    /* ./parser//parser_prod.nit:7101 */
+    CALL_parser_prod___ANode___parent__eq(fra.me.REG[0])(fra.me.REG[0], closctx->REG[0]);
+    stack_frame_head = fra.me.prev;
+    return;
+  }
+void parser_prod___AClosureDef___replace_child(val_t p0, val_t p1, val_t p2){
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t REGB2;
+  val_t REGB3;
+  val_t REGB4;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 7117;
+  fra.me.meth = LOCATE_parser_prod___AClosureDef___replace_child;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  /* ./parser//parser_prod.nit:7119 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AClosureDef____n_bang(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_bang", LOCATE_parser_prod, 7119);
+  }
+  fra.me.REG[3] = ATTR_parser_nodes___AClosureDef____n_bang(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+    REGB0 = REGB1;
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:7120 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:7121 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 7121);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:7122 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_TBang, ID_TBang)) /*cast TBang*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 7122);
+      }
+      /* ./parser//parser_prod.nit:7123 */
+      ATTR_parser_nodes___AClosureDef____n_bang(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:7125 */
+      nit_abort("Aborted", NULL, LOCATE_parser_prod, 7125);
+    }
+    /* ./parser//parser_prod.nit:7127 */
+    goto label1;
+  }
+  /* ./parser//parser_prod.nit:7129 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AClosureDef____n_id(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_id", LOCATE_parser_prod, 7129);
+  }
+  fra.me.REG[3] = ATTR_parser_nodes___AClosureDef____n_id(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+    REGB0 = REGB1;
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:7130 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:7131 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 7131);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:7132 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_AClosureId, ID_AClosureId)) /*cast AClosureId*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 7132);
+      }
+      /* ./parser//parser_prod.nit:7133 */
+      ATTR_parser_nodes___AClosureDef____n_id(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:7135 */
+      nit_abort("Aborted", NULL, LOCATE_parser_prod, 7135);
+    }
+    /* ./parser//parser_prod.nit:7137 */
+    goto label1;
+  }
+  /* ./parser//parser_prod.nit:7139 */
+  REGB0 = TAG_Int(0);
+  REGB1 = TAG_Bool(ATTR_parser_nodes___AClosureDef____n_ids(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB1)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_ids", LOCATE_parser_prod, 7139);
+  }
+  fra.me.REG[3] = ATTR_parser_nodes___AClosureDef____n_ids(fra.me.REG[0]);
+  REGB1 = CALL_abstract_collection___Collection___length(fra.me.REG[3])(fra.me.REG[3]);
+  /* ./../lib/standard//kernel.nit:332 */
+  while(1) {
+    /* ./../lib/standard//kernel.nit:212 */
+    REGB2 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
+    /* ./../lib/standard//kernel.nit:332 */
+    if (UNTAG_Bool(REGB2)) {
+      /* ./parser//parser_prod.nit:7139 */
+      REGB2 = REGB0;
+      /* ./parser//parser_prod.nit:7140 */
+      REGB3 = TAG_Bool(ATTR_parser_nodes___AClosureDef____n_ids(fra.me.REG[0])!=NIT_NULL);
+      if (UNTAG_Bool(REGB3)) {
+      } else {
+        nit_abort("Uninitialized attribute %s", "_n_ids", LOCATE_parser_prod, 7140);
+      }
+      fra.me.REG[3] = ATTR_parser_nodes___AClosureDef____n_ids(fra.me.REG[0]);
+      fra.me.REG[3] = CALL_abstract_collection___MapRead_____bra(fra.me.REG[3])(fra.me.REG[3], REGB2);
+      REGB3 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
+      if (UNTAG_Bool(REGB3)) {
+      } else {
+        REGB4 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+        if (UNTAG_Bool(REGB4)) {
+          REGB4 = TAG_Bool(false);
+          REGB3 = REGB4;
+        } else {
+          REGB4 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+          REGB3 = REGB4;
+        }
+      }
+      if (UNTAG_Bool(REGB3)) {
+        /* ./parser//parser_prod.nit:7141 */
+        REGB3 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+        if (UNTAG_Bool(REGB3)) {
+        } else {
+          REGB4 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+          if (UNTAG_Bool(REGB4)) {
+            REGB4 = TAG_Bool(false);
+            REGB3 = REGB4;
+          } else {
+            REGB4 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+            REGB3 = REGB4;
+          }
+        }
+        REGB3 = TAG_Bool(!UNTAG_Bool(REGB3));
+        if (UNTAG_Bool(REGB3)) {
+          /* ./parser//parser_prod.nit:7142 */
+          REGB3 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_TId, ID_TId)) /*cast TId*/;
+          if (UNTAG_Bool(REGB3)) {
+          } else {
+            nit_abort("Assert failed", NULL, LOCATE_parser_prod, 7142);
+          }
+          /* ./parser//parser_prod.nit:7143 */
+          REGB3 = TAG_Bool(ATTR_parser_nodes___AClosureDef____n_ids(fra.me.REG[0])!=NIT_NULL);
+          if (UNTAG_Bool(REGB3)) {
+          } else {
+            nit_abort("Uninitialized attribute %s", "_n_ids", LOCATE_parser_prod, 7143);
+          }
+          fra.me.REG[3] = ATTR_parser_nodes___AClosureDef____n_ids(fra.me.REG[0]);
+          CALL_abstract_collection___Map_____braeq(fra.me.REG[3])(fra.me.REG[3], REGB2, fra.me.REG[2]);
+          /* ./parser//parser_prod.nit:7144 */
+          REGB3 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+          if (UNTAG_Bool(REGB3)) {
+            nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 7144);
+          }
+          CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+        } else {
+          /* ./parser//parser_prod.nit:7146 */
+          REGB3 = TAG_Bool(ATTR_parser_nodes___AClosureDef____n_ids(fra.me.REG[0])!=NIT_NULL);
+          if (UNTAG_Bool(REGB3)) {
+          } else {
+            nit_abort("Uninitialized attribute %s", "_n_ids", LOCATE_parser_prod, 7146);
+          }
+          fra.me.REG[3] = ATTR_parser_nodes___AClosureDef____n_ids(fra.me.REG[0]);
+          CALL_abstract_collection___Map___remove_at(fra.me.REG[3])(fra.me.REG[3], REGB2);
+        }
+        /* ./parser//parser_prod.nit:7148 */
+        goto label1;
+      }
+      /* ./../lib/standard//kernel.nit:334 */
+      REGB2 = TAG_Int(1);
+      /* ./../lib/standard//kernel.nit:215 */
+      REGB2 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB2));
+      /* ./../lib/standard//kernel.nit:334 */
+      REGB0 = REGB2;
+    } else {
+      /* ./../lib/standard//kernel.nit:332 */
+      goto label2;
+    }
+  }
+  label2: while(0);
+  /* ./parser//parser_prod.nit:7151 */
+  fra.me.REG[3] = ATTR_parser_nodes___AClosureDef____n_kwdo(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+      REGB0 = REGB1;
+    }
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:7152 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:7153 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 7153);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:7154 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_TKwdo, ID_TKwdo)) /*cast TKwdo*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 7154);
+      }
+      /* ./parser//parser_prod.nit:7155 */
+      ATTR_parser_nodes___AClosureDef____n_kwdo(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:7157 */
+      ATTR_parser_nodes___AClosureDef____n_kwdo(fra.me.REG[0]) = NIT_NULL;
+    }
+    /* ./parser//parser_prod.nit:7159 */
+    goto label1;
+  }
+  /* ./parser//parser_prod.nit:7161 */
+  fra.me.REG[3] = ATTR_parser_nodes___AClosureDef____n_expr(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+      REGB0 = REGB1;
+    }
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:7162 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:7163 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 7163);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:7164 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_AExpr, ID_AExpr)) /*cast AExpr*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 7164);
+      }
+      /* ./parser//parser_prod.nit:7165 */
+      ATTR_parser_nodes___AClosureDef____n_expr(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:7167 */
+      ATTR_parser_nodes___AClosureDef____n_expr(fra.me.REG[0]) = NIT_NULL;
+    }
+    /* ./parser//parser_prod.nit:7169 */
+    goto label1;
+  }
+  /* ./parser//parser_prod.nit:7171 */
+  fra.me.REG[3] = ATTR_parser_nodes___ALabelable____n_label(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+      REGB0 = REGB1;
+    }
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:7172 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:7173 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 7173);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:7174 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_ALabel, ID_ALabel)) /*cast ALabel*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 7174);
+      }
+      /* ./parser//parser_prod.nit:7175 */
+      ATTR_parser_nodes___ALabelable____n_label(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:7177 */
+      ATTR_parser_nodes___ALabelable____n_label(fra.me.REG[0]) = NIT_NULL;
+    }
+    /* ./parser//parser_prod.nit:7179 */
+    goto label1;
+  }
+  label1: while(0);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser_prod___AClosureDef___visit_all(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 7183;
+  fra.me.meth = LOCATE_parser_prod___AClosureDef___visit_all;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:7185 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AClosureDef____n_bang(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_bang", LOCATE_parser_prod, 7185);
+  }
+  fra.me.REG[2] = ATTR_parser_nodes___AClosureDef____n_bang(fra.me.REG[0]);
+  CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser_prod.nit:7186 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AClosureDef____n_id(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_id", LOCATE_parser_prod, 7186);
+  }
+  fra.me.REG[2] = ATTR_parser_nodes___AClosureDef____n_id(fra.me.REG[0]);
+  CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser_prod.nit:7187 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AClosureDef____n_ids(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_ids", LOCATE_parser_prod, 7187);
+  }
+  fra.me.REG[2] = ATTR_parser_nodes___AClosureDef____n_ids(fra.me.REG[0]);
+  CALL_abstract_collection___Collection___iterate(fra.me.REG[2])(fra.me.REG[2], (&(fra.me)), ((fun_t)OC_parser_prod___AClosureDef___visit_all_1));
+  /* ./parser//parser_prod.nit:7190 */
+  fra.me.REG[2] = ATTR_parser_nodes___AClosureDef____n_kwdo(fra.me.REG[0]);
+  REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:7191 */
+    fra.me.REG[2] = ATTR_parser_nodes___AClosureDef____n_kwdo(fra.me.REG[0]);
+    REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_TKwdo, ID_TKwdo)) /*cast TKwdo*/;
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      nit_abort("Cast failed", NULL, LOCATE_parser_prod, 7191);
+    }
+    CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  }
+  /* ./parser//parser_prod.nit:7193 */
+  fra.me.REG[2] = ATTR_parser_nodes___AClosureDef____n_expr(fra.me.REG[0]);
+  REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:7194 */
+    fra.me.REG[2] = ATTR_parser_nodes___AClosureDef____n_expr(fra.me.REG[0]);
+    REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_AExpr, ID_AExpr)) /*cast AExpr*/;
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      nit_abort("Cast failed", NULL, LOCATE_parser_prod, 7194);
+    }
+    CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  }
+  /* ./parser//parser_prod.nit:7196 */
+  fra.me.REG[2] = ATTR_parser_nodes___ALabelable____n_label(fra.me.REG[0]);
+  REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:7197 */
+    fra.me.REG[0] = ATTR_parser_nodes___ALabelable____n_label(fra.me.REG[0]);
+    REGB0 = TAG_Bool((fra.me.REG[0]!=NIT_NULL) && VAL_ISA(fra.me.REG[0], COLOR_ALabel, ID_ALabel)) /*cast ALabel*/;
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      nit_abort("Cast failed", NULL, LOCATE_parser_prod, 7197);
+    }
+    CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  }
+  stack_frame_head = fra.me.prev;
+  return;
+}
+  void OC_parser_prod___AClosureDef___visit_all_1(struct stack_frame_t *closctx, val_t p0, struct stack_frame_t *closctx_param, fun_t clos_fun0){
+    struct {struct stack_frame_t me;} fra;
+    fun_t CREG[1];
+    val_t tmp;
+    fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+    fra.me.file = LOCATE_parser_prod;
+    fra.me.line = 0;
+    fra.me.meth = LOCATE_parser_prod___AClosureDef___visit_all;
+    fra.me.has_broke = 0;
+    fra.me.REG_size = 1;
+    fra.me.REG[0] = NIT_NULL;
+    fra.me.closure_ctx = closctx_param;
+    fra.me.closure_funs = CREG;
+    fra.me.REG[0] = p0;
+    CREG[0] = clos_fun0;
+    /* ./parser//parser_prod.nit:7188 */
+    CALL_parser_prod___Visitor___enter_visit(closctx->REG[1])(closctx->REG[1], fra.me.REG[0]);
+    stack_frame_head = fra.me.prev;
+    return;
+  }
+void parser_prod___ASimpleClosureId___empty_init(val_t p0, int* init_table){
+  int itpos257 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ASimpleClosureId].i;
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  if (init_table[itpos257]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 7202;
+  fra.me.meth = LOCATE_parser_prod___ASimpleClosureId___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos257] = 1;
+  return;
+}
+void parser_prod___ASimpleClosureId___init_asimpleclosureid(val_t p0, val_t p1, int* init_table){
+  int itpos258 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ASimpleClosureId].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos258]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 7204;
+  fra.me.meth = LOCATE_parser_prod___ASimpleClosureId___init_asimpleclosureid;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:7208 */
+  CALL_parser_prod___ASimpleClosureId___empty_init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  /* ./parser//parser_prod.nit:7209 */
+  REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Cast failed", NULL, LOCATE_parser_prod, 7209);
+  }
+  ATTR_parser_nodes___ASimpleClosureId____n_id(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./parser//parser_prod.nit:7210 */
+  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+    nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 7210);
+  }
+  CALL_parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  init_table[itpos258] = 1;
+  return;
+}
+void parser_prod___ASimpleClosureId___replace_child(val_t p0, val_t p1, val_t p2){
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 7213;
+  fra.me.meth = LOCATE_parser_prod___ASimpleClosureId___replace_child;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  /* ./parser//parser_prod.nit:7215 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ASimpleClosureId____n_id(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_id", LOCATE_parser_prod, 7215);
+  }
+  fra.me.REG[3] = ATTR_parser_nodes___ASimpleClosureId____n_id(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+    REGB0 = REGB1;
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:7216 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:7217 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 7217);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:7218 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_TId, ID_TId)) /*cast TId*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 7218);
+      }
+      /* ./parser//parser_prod.nit:7219 */
+      ATTR_parser_nodes___ASimpleClosureId____n_id(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:7221 */
+      nit_abort("Aborted", NULL, LOCATE_parser_prod, 7221);
+    }
+    /* ./parser//parser_prod.nit:7223 */
+    goto label1;
+  }
+  label1: while(0);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser_prod___ASimpleClosureId___visit_all(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 7227;
+  fra.me.meth = LOCATE_parser_prod___ASimpleClosureId___visit_all;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:7229 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ASimpleClosureId____n_id(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_id", LOCATE_parser_prod, 7229);
+  }
+  fra.me.REG[0] = ATTR_parser_nodes___ASimpleClosureId____n_id(fra.me.REG[0]);
+  CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser_prod___ABreakClosureId___empty_init(val_t p0, int* init_table){
+  int itpos259 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ABreakClosureId].i;
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  if (init_table[itpos259]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 7233;
+  fra.me.meth = LOCATE_parser_prod___ABreakClosureId___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos259] = 1;
+  return;
+}
+void parser_prod___ABreakClosureId___init_abreakclosureid(val_t p0, val_t p1, int* init_table){
+  int itpos260 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ABreakClosureId].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos260]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 7235;
+  fra.me.meth = LOCATE_parser_prod___ABreakClosureId___init_abreakclosureid;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:7239 */
+  CALL_parser_prod___ABreakClosureId___empty_init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  /* ./parser//parser_prod.nit:7240 */
+  REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Cast failed", NULL, LOCATE_parser_prod, 7240);
+  }
+  ATTR_parser_nodes___ABreakClosureId____n_kwbreak(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./parser//parser_prod.nit:7241 */
+  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+    nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 7241);
+  }
+  CALL_parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  init_table[itpos260] = 1;
+  return;
+}
+void parser_prod___ABreakClosureId___replace_child(val_t p0, val_t p1, val_t p2){
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 7244;
+  fra.me.meth = LOCATE_parser_prod___ABreakClosureId___replace_child;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  /* ./parser//parser_prod.nit:7246 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ABreakClosureId____n_kwbreak(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_kwbreak", LOCATE_parser_prod, 7246);
+  }
+  fra.me.REG[3] = ATTR_parser_nodes___ABreakClosureId____n_kwbreak(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+    REGB0 = REGB1;
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:7247 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:7248 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 7248);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:7249 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_TKwbreak, ID_TKwbreak)) /*cast TKwbreak*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 7249);
+      }
+      /* ./parser//parser_prod.nit:7250 */
+      ATTR_parser_nodes___ABreakClosureId____n_kwbreak(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:7252 */
+      nit_abort("Aborted", NULL, LOCATE_parser_prod, 7252);
+    }
+    /* ./parser//parser_prod.nit:7254 */
+    goto label1;
+  }
+  label1: while(0);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser_prod___ABreakClosureId___visit_all(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 7258;
+  fra.me.meth = LOCATE_parser_prod___ABreakClosureId___visit_all;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:7260 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ABreakClosureId____n_kwbreak(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_kwbreak", LOCATE_parser_prod, 7260);
+  }
+  fra.me.REG[0] = ATTR_parser_nodes___ABreakClosureId____n_kwbreak(fra.me.REG[0]);
+  CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser_prod___AQualified___empty_init(val_t p0, int* init_table){
+  int itpos261 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_AQualified].i;
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  if (init_table[itpos261]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 7264;
+  fra.me.meth = LOCATE_parser_prod___AQualified___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos261] = 1;
+  return;
+}
+void parser_prod___AQualified___init_aqualified(val_t p0, val_t p1, val_t p2, int* init_table){
+  int itpos262 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_AQualified].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  if (init_table[itpos262]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 7266;
+  fra.me.meth = LOCATE_parser_prod___AQualified___init_aqualified;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  /* ./parser//parser_prod.nit:7271 */
+  CALL_parser_prod___AQualified___empty_init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  CALL_abstract_collection___Collection___iterate(fra.me.REG[1])(fra.me.REG[1], (&(fra.me)), ((fun_t)OC_parser_prod___AQualified___init_aqualified_1));
+  /* ./parser//parser_prod.nit:7277 */
+  ATTR_parser_nodes___AQualified____n_classid(fra.me.REG[0]) = fra.me.REG[2];
+  /* ./parser//parser_prod.nit:7278 */
+  REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:7279 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+      nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 7279);
+    }
+    CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+  }
+  stack_frame_head = fra.me.prev;
+  init_table[itpos262] = 1;
+  return;
+}
+  void OC_parser_prod___AQualified___init_aqualified_1(struct stack_frame_t *closctx, val_t p0, struct stack_frame_t *closctx_param, fun_t clos_fun0){
+    struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+    val_t REGB0;
+    fun_t CREG[1];
+    val_t tmp;
+    /* ./parser//parser_prod.nit:7272 */
+    fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+    fra.me.file = LOCATE_parser_prod;
+    fra.me.line = 0;
+    fra.me.meth = LOCATE_parser_prod___AQualified___init_aqualified;
+    fra.me.has_broke = 0;
+    fra.me.REG_size = 2;
+    fra.me.REG[0] = NIT_NULL;
+    fra.me.REG[1] = NIT_NULL;
+    fra.me.closure_ctx = closctx_param;
+    fra.me.closure_funs = CREG;
+    fra.me.REG[0] = p0;
+    CREG[0] = clos_fun0;
+    /* ./parser//parser_prod.nit:7273 */
+    REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[0], COLOR_TId, ID_TId)) /*cast TId*/;
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      nit_abort("Assert failed", NULL, LOCATE_parser_prod, 7273);
+    }
+    /* ./parser//parser_prod.nit:7274 */
+    REGB0 = TAG_Bool(ATTR_parser_nodes___AQualified____n_id(closctx->REG[0])!=NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      nit_abort("Uninitialized attribute %s", "_n_id", LOCATE_parser_prod, 7274);
+    }
+    fra.me.REG[1] = ATTR_parser_nodes___AQualified____n_id(closctx->REG[0]);
+    CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+    /* ./parser//parser_prod.nit:7275 */
+    CALL_parser_prod___ANode___parent__eq(fra.me.REG[0])(fra.me.REG[0], closctx->REG[0]);
+    stack_frame_head = fra.me.prev;
+    return;
+  }
+void parser_prod___AQualified___replace_child(val_t p0, val_t p1, val_t p2){
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t REGB2;
+  val_t REGB3;
+  val_t REGB4;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 7283;
+  fra.me.meth = LOCATE_parser_prod___AQualified___replace_child;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  /* ./parser//parser_prod.nit:7285 */
+  REGB0 = TAG_Int(0);
+  REGB1 = TAG_Bool(ATTR_parser_nodes___AQualified____n_id(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB1)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_id", LOCATE_parser_prod, 7285);
+  }
+  fra.me.REG[3] = ATTR_parser_nodes___AQualified____n_id(fra.me.REG[0]);
+  REGB1 = CALL_abstract_collection___Collection___length(fra.me.REG[3])(fra.me.REG[3]);
+  /* ./../lib/standard//kernel.nit:332 */
+  while(1) {
+    /* ./../lib/standard//kernel.nit:212 */
+    REGB2 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
+    /* ./../lib/standard//kernel.nit:332 */
+    if (UNTAG_Bool(REGB2)) {
+      /* ./parser//parser_prod.nit:7285 */
+      REGB2 = REGB0;
+      /* ./parser//parser_prod.nit:7286 */
+      REGB3 = TAG_Bool(ATTR_parser_nodes___AQualified____n_id(fra.me.REG[0])!=NIT_NULL);
+      if (UNTAG_Bool(REGB3)) {
+      } else {
+        nit_abort("Uninitialized attribute %s", "_n_id", LOCATE_parser_prod, 7286);
+      }
+      fra.me.REG[3] = ATTR_parser_nodes___AQualified____n_id(fra.me.REG[0]);
+      fra.me.REG[3] = CALL_abstract_collection___MapRead_____bra(fra.me.REG[3])(fra.me.REG[3], REGB2);
+      REGB3 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
+      if (UNTAG_Bool(REGB3)) {
+      } else {
+        REGB4 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+        if (UNTAG_Bool(REGB4)) {
+          REGB4 = TAG_Bool(false);
+          REGB3 = REGB4;
+        } else {
+          REGB4 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+          REGB3 = REGB4;
+        }
+      }
+      if (UNTAG_Bool(REGB3)) {
+        /* ./parser//parser_prod.nit:7287 */
+        REGB3 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+        if (UNTAG_Bool(REGB3)) {
+        } else {
+          REGB4 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+          if (UNTAG_Bool(REGB4)) {
+            REGB4 = TAG_Bool(false);
+            REGB3 = REGB4;
+          } else {
+            REGB4 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+            REGB3 = REGB4;
+          }
+        }
+        REGB3 = TAG_Bool(!UNTAG_Bool(REGB3));
+        if (UNTAG_Bool(REGB3)) {
+          /* ./parser//parser_prod.nit:7288 */
+          REGB3 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_TId, ID_TId)) /*cast TId*/;
+          if (UNTAG_Bool(REGB3)) {
+          } else {
+            nit_abort("Assert failed", NULL, LOCATE_parser_prod, 7288);
+          }
+          /* ./parser//parser_prod.nit:7289 */
+          REGB3 = TAG_Bool(ATTR_parser_nodes___AQualified____n_id(fra.me.REG[0])!=NIT_NULL);
+          if (UNTAG_Bool(REGB3)) {
+          } else {
+            nit_abort("Uninitialized attribute %s", "_n_id", LOCATE_parser_prod, 7289);
+          }
+          fra.me.REG[3] = ATTR_parser_nodes___AQualified____n_id(fra.me.REG[0]);
+          CALL_abstract_collection___Map_____braeq(fra.me.REG[3])(fra.me.REG[3], REGB2, fra.me.REG[2]);
+          /* ./parser//parser_prod.nit:7290 */
+          REGB3 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+          if (UNTAG_Bool(REGB3)) {
+            nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 7290);
+          }
+          CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+        } else {
+          /* ./parser//parser_prod.nit:7292 */
+          REGB3 = TAG_Bool(ATTR_parser_nodes___AQualified____n_id(fra.me.REG[0])!=NIT_NULL);
+          if (UNTAG_Bool(REGB3)) {
+          } else {
+            nit_abort("Uninitialized attribute %s", "_n_id", LOCATE_parser_prod, 7292);
+          }
+          fra.me.REG[3] = ATTR_parser_nodes___AQualified____n_id(fra.me.REG[0]);
+          CALL_abstract_collection___Map___remove_at(fra.me.REG[3])(fra.me.REG[3], REGB2);
+        }
+        /* ./parser//parser_prod.nit:7294 */
+        goto label1;
+      }
+      /* ./../lib/standard//kernel.nit:334 */
+      REGB2 = TAG_Int(1);
+      /* ./../lib/standard//kernel.nit:215 */
+      REGB2 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB2));
+      /* ./../lib/standard//kernel.nit:334 */
+      REGB0 = REGB2;
+    } else {
+      /* ./../lib/standard//kernel.nit:332 */
+      goto label2;
+    }
+  }
+  label2: while(0);
+  /* ./parser//parser_prod.nit:7297 */
+  fra.me.REG[3] = ATTR_parser_nodes___AQualified____n_classid(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+      REGB0 = REGB1;
+    }
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:7298 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser_prod.nit:7299 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 7299);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:7300 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_TClassid, ID_TClassid)) /*cast TClassid*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 7300);
+      }
+      /* ./parser//parser_prod.nit:7301 */
+      ATTR_parser_nodes___AQualified____n_classid(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* ./parser//parser_prod.nit:7303 */
+      ATTR_parser_nodes___AQualified____n_classid(fra.me.REG[0]) = NIT_NULL;
+    }
+    /* ./parser//parser_prod.nit:7305 */
+    goto label1;
+  }
+  label1: while(0);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser_prod___AQualified___visit_all(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 7309;
+  fra.me.meth = LOCATE_parser_prod___AQualified___visit_all;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:7311 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AQualified____n_id(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_id", LOCATE_parser_prod, 7311);
+  }
+  fra.me.REG[2] = ATTR_parser_nodes___AQualified____n_id(fra.me.REG[0]);
+  CALL_abstract_collection___Collection___iterate(fra.me.REG[2])(fra.me.REG[2], (&(fra.me)), ((fun_t)OC_parser_prod___AQualified___visit_all_1));
+  /* ./parser//parser_prod.nit:7314 */
+  fra.me.REG[2] = ATTR_parser_nodes___AQualified____n_classid(fra.me.REG[0]);
+  REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:7315 */
+    fra.me.REG[0] = ATTR_parser_nodes___AQualified____n_classid(fra.me.REG[0]);
+    REGB0 = TAG_Bool((fra.me.REG[0]!=NIT_NULL) && VAL_ISA(fra.me.REG[0], COLOR_TClassid, ID_TClassid)) /*cast TClassid*/;
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      nit_abort("Cast failed", NULL, LOCATE_parser_prod, 7315);
+    }
+    CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  }
+  stack_frame_head = fra.me.prev;
+  return;
+}
+  void OC_parser_prod___AQualified___visit_all_1(struct stack_frame_t *closctx, val_t p0, struct stack_frame_t *closctx_param, fun_t clos_fun0){
+    struct {struct stack_frame_t me;} fra;
+    fun_t CREG[1];
+    val_t tmp;
+    fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+    fra.me.file = LOCATE_parser_prod;
+    fra.me.line = 0;
+    fra.me.meth = LOCATE_parser_prod___AQualified___visit_all;
+    fra.me.has_broke = 0;
+    fra.me.REG_size = 1;
+    fra.me.REG[0] = NIT_NULL;
+    fra.me.closure_ctx = closctx_param;
+    fra.me.closure_funs = CREG;
+    fra.me.REG[0] = p0;
+    CREG[0] = clos_fun0;
+    /* ./parser//parser_prod.nit:7312 */
+    CALL_parser_prod___Visitor___enter_visit(closctx->REG[1])(closctx->REG[1], fra.me.REG[0]);
+    stack_frame_head = fra.me.prev;
+    return;
+  }
+void parser_prod___ADoc___empty_init(val_t p0, int* init_table){
+  int itpos263 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ADoc].i;
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  if (init_table[itpos263]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 7320;
+  fra.me.meth = LOCATE_parser_prod___ADoc___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos263] = 1;
+  return;
+}
+void parser_prod___ADoc___init_adoc(val_t p0, val_t p1, int* init_table){
+  int itpos264 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ADoc].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  if (init_table[itpos264]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 7322;
+  fra.me.meth = LOCATE_parser_prod___ADoc___init_adoc;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:7326 */
+  CALL_parser_prod___ADoc___empty_init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  CALL_abstract_collection___Collection___iterate(fra.me.REG[1])(fra.me.REG[1], (&(fra.me)), ((fun_t)OC_parser_prod___ADoc___init_adoc_1));
+  stack_frame_head = fra.me.prev;
+  init_table[itpos264] = 1;
+  return;
+}
+  void OC_parser_prod___ADoc___init_adoc_1(struct stack_frame_t *closctx, val_t p0, struct stack_frame_t *closctx_param, fun_t clos_fun0){
+    struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+    val_t REGB0;
+    fun_t CREG[1];
+    val_t tmp;
+    /* ./parser//parser_prod.nit:7327 */
+    fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+    fra.me.file = LOCATE_parser_prod;
+    fra.me.line = 0;
+    fra.me.meth = LOCATE_parser_prod___ADoc___init_adoc;
+    fra.me.has_broke = 0;
+    fra.me.REG_size = 2;
+    fra.me.REG[0] = NIT_NULL;
+    fra.me.REG[1] = NIT_NULL;
+    fra.me.closure_ctx = closctx_param;
+    fra.me.closure_funs = CREG;
+    fra.me.REG[0] = p0;
+    CREG[0] = clos_fun0;
+    /* ./parser//parser_prod.nit:7328 */
+    REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[0], COLOR_TComment, ID_TComment)) /*cast TComment*/;
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      nit_abort("Assert failed", NULL, LOCATE_parser_prod, 7328);
+    }
+    /* ./parser//parser_prod.nit:7329 */
+    REGB0 = TAG_Bool(ATTR_parser_nodes___ADoc____n_comment(closctx->REG[0])!=NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      nit_abort("Uninitialized attribute %s", "_n_comment", LOCATE_parser_prod, 7329);
+    }
+    fra.me.REG[1] = ATTR_parser_nodes___ADoc____n_comment(closctx->REG[0]);
+    CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+    /* ./parser//parser_prod.nit:7330 */
+    CALL_parser_prod___ANode___parent__eq(fra.me.REG[0])(fra.me.REG[0], closctx->REG[0]);
+    stack_frame_head = fra.me.prev;
+    return;
+  }
+void parser_prod___ADoc___replace_child(val_t p0, val_t p1, val_t p2){
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t REGB2;
+  val_t REGB3;
+  val_t REGB4;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 7334;
+  fra.me.meth = LOCATE_parser_prod___ADoc___replace_child;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  /* ./parser//parser_prod.nit:7336 */
+  REGB0 = TAG_Int(0);
+  REGB1 = TAG_Bool(ATTR_parser_nodes___ADoc____n_comment(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB1)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_comment", LOCATE_parser_prod, 7336);
+  }
+  fra.me.REG[3] = ATTR_parser_nodes___ADoc____n_comment(fra.me.REG[0]);
+  REGB1 = CALL_abstract_collection___Collection___length(fra.me.REG[3])(fra.me.REG[3]);
+  /* ./../lib/standard//kernel.nit:332 */
+  while(1) {
+    /* ./../lib/standard//kernel.nit:212 */
+    REGB2 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
+    /* ./../lib/standard//kernel.nit:332 */
+    if (UNTAG_Bool(REGB2)) {
+      /* ./parser//parser_prod.nit:7336 */
+      REGB2 = REGB0;
+      /* ./parser//parser_prod.nit:7337 */
+      REGB3 = TAG_Bool(ATTR_parser_nodes___ADoc____n_comment(fra.me.REG[0])!=NIT_NULL);
+      if (UNTAG_Bool(REGB3)) {
+      } else {
+        nit_abort("Uninitialized attribute %s", "_n_comment", LOCATE_parser_prod, 7337);
+      }
+      fra.me.REG[3] = ATTR_parser_nodes___ADoc____n_comment(fra.me.REG[0]);
+      fra.me.REG[3] = CALL_abstract_collection___MapRead_____bra(fra.me.REG[3])(fra.me.REG[3], REGB2);
+      REGB3 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
+      if (UNTAG_Bool(REGB3)) {
+      } else {
+        REGB4 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+        if (UNTAG_Bool(REGB4)) {
+          REGB4 = TAG_Bool(false);
+          REGB3 = REGB4;
+        } else {
+          REGB4 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+          REGB3 = REGB4;
+        }
+      }
+      if (UNTAG_Bool(REGB3)) {
+        /* ./parser//parser_prod.nit:7338 */
+        REGB3 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+        if (UNTAG_Bool(REGB3)) {
+        } else {
+          REGB4 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+          if (UNTAG_Bool(REGB4)) {
+            REGB4 = TAG_Bool(false);
+            REGB3 = REGB4;
+          } else {
+            REGB4 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+            REGB3 = REGB4;
+          }
+        }
+        REGB3 = TAG_Bool(!UNTAG_Bool(REGB3));
+        if (UNTAG_Bool(REGB3)) {
+          /* ./parser//parser_prod.nit:7339 */
+          REGB3 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_TComment, ID_TComment)) /*cast TComment*/;
+          if (UNTAG_Bool(REGB3)) {
+          } else {
+            nit_abort("Assert failed", NULL, LOCATE_parser_prod, 7339);
+          }
+          /* ./parser//parser_prod.nit:7340 */
+          REGB3 = TAG_Bool(ATTR_parser_nodes___ADoc____n_comment(fra.me.REG[0])!=NIT_NULL);
+          if (UNTAG_Bool(REGB3)) {
+          } else {
+            nit_abort("Uninitialized attribute %s", "_n_comment", LOCATE_parser_prod, 7340);
+          }
+          fra.me.REG[3] = ATTR_parser_nodes___ADoc____n_comment(fra.me.REG[0]);
+          CALL_abstract_collection___Map_____braeq(fra.me.REG[3])(fra.me.REG[3], REGB2, fra.me.REG[2]);
+          /* ./parser//parser_prod.nit:7341 */
+          REGB3 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+          if (UNTAG_Bool(REGB3)) {
+            nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 7341);
+          }
+          CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+        } else {
+          /* ./parser//parser_prod.nit:7343 */
+          REGB3 = TAG_Bool(ATTR_parser_nodes___ADoc____n_comment(fra.me.REG[0])!=NIT_NULL);
+          if (UNTAG_Bool(REGB3)) {
+          } else {
+            nit_abort("Uninitialized attribute %s", "_n_comment", LOCATE_parser_prod, 7343);
+          }
+          fra.me.REG[3] = ATTR_parser_nodes___ADoc____n_comment(fra.me.REG[0]);
+          CALL_abstract_collection___Map___remove_at(fra.me.REG[3])(fra.me.REG[3], REGB2);
+        }
+        /* ./parser//parser_prod.nit:7345 */
+        goto label1;
+      }
+      /* ./../lib/standard//kernel.nit:334 */
+      REGB2 = TAG_Int(1);
+      /* ./../lib/standard//kernel.nit:215 */
+      REGB2 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB2));
+      /* ./../lib/standard//kernel.nit:334 */
+      REGB0 = REGB2;
+    } else {
+      /* ./../lib/standard//kernel.nit:332 */
+      goto label2;
+    }
+  }
+  label2: while(0);
+  label1: while(0);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser_prod___ADoc___visit_all(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 7350;
+  fra.me.meth = LOCATE_parser_prod___ADoc___visit_all;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:7352 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ADoc____n_comment(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_comment", LOCATE_parser_prod, 7352);
+  }
+  fra.me.REG[0] = ATTR_parser_nodes___ADoc____n_comment(fra.me.REG[0]);
+  CALL_abstract_collection___Collection___iterate(fra.me.REG[0])(fra.me.REG[0], (&(fra.me)), ((fun_t)OC_parser_prod___ADoc___visit_all_1));
+  stack_frame_head = fra.me.prev;
+  return;
+}
+  void OC_parser_prod___ADoc___visit_all_1(struct stack_frame_t *closctx, val_t p0, struct stack_frame_t *closctx_param, fun_t clos_fun0){
+    struct {struct stack_frame_t me;} fra;
+    fun_t CREG[1];
+    val_t tmp;
+    fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+    fra.me.file = LOCATE_parser_prod;
+    fra.me.line = 0;
+    fra.me.meth = LOCATE_parser_prod___ADoc___visit_all;
+    fra.me.has_broke = 0;
+    fra.me.REG_size = 1;
+    fra.me.REG[0] = NIT_NULL;
+    fra.me.closure_ctx = closctx_param;
+    fra.me.closure_funs = CREG;
+    fra.me.REG[0] = p0;
+    CREG[0] = clos_fun0;
+    /* ./parser//parser_prod.nit:7353 */
+    CALL_parser_prod___Visitor___enter_visit(closctx->REG[1])(closctx->REG[1], fra.me.REG[0]);
+    stack_frame_head = fra.me.prev;
+    return;
+  }
+void parser_prod___Start___init(val_t p0, val_t p1, val_t p2, int* init_table){
+  int itpos265 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_Start].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  val_t tmp;
+  if (init_table[itpos265]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 7359;
+  fra.me.meth = LOCATE_parser_prod___Start___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  /* ./parser//parser_prod.nit:7363 */
+  ATTR_parser_nodes___Start____n_base(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./parser//parser_prod.nit:7364 */
+  ATTR_parser_nodes___Start____n_eof(fra.me.REG[0]) = fra.me.REG[2];
+  stack_frame_head = fra.me.prev;
+  init_table[itpos265] = 1;
+  return;
+}
+void parser_prod___Start___replace_child(val_t p0, val_t p1, val_t p2){
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 7367;
+  fra.me.meth = LOCATE_parser_prod___Start___replace_child;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  /* ./parser//parser_prod.nit:7369 */
+  fra.me.REG[3] = ATTR_parser_nodes___Start____n_base(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+      REGB0 = REGB1;
+    }
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:7370 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      /* ./parser//parser_prod.nit:7372 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser_prod, 7372);
+      }
+      CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./parser//parser_prod.nit:7373 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_AModule, ID_AModule)) /*cast AModule*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser_prod, 7373);
+      }
+      /* ./parser//parser_prod.nit:7374 */
+      ATTR_parser_nodes___Start____n_base(fra.me.REG[0]) = fra.me.REG[2];
+    }
+    /* ./parser//parser_prod.nit:7376 */
+    CALL_parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
+    /* ./parser//parser_prod.nit:7377 */
+    goto label1;
+  }
+  label1: while(0);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser_prod___Start___visit_all(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser_prod;
+  fra.me.line = 7381;
+  fra.me.meth = LOCATE_parser_prod___Start___visit_all;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:7383 */
+  fra.me.REG[2] = ATTR_parser_nodes___Start____n_base(fra.me.REG[0]);
+  REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser_prod.nit:7384 */
+    fra.me.REG[2] = ATTR_parser_nodes___Start____n_base(fra.me.REG[0]);
+    REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_AModule, ID_AModule)) /*cast AModule*/;
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      nit_abort("Cast failed", NULL, LOCATE_parser_prod, 7384);
+    }
+    CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  }
+  /* ./parser//parser_prod.nit:7386 */
+  REGB0 = TAG_Bool(ATTR_parser_nodes___Start____n_eof(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_eof", LOCATE_parser_prod, 7386);
+  }
+  fra.me.REG[0] = ATTR_parser_nodes___Start____n_eof(fra.me.REG[0]);
+  CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
   return;
 }