tools: cleanup after insertion of 'Location' class
[nit.git] / c_src / parser_prod._sep.c
index f2c8f9a..fed7b05 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, "parser_prod::PNode::parent (src/parser//parser_prod.nit:9,2--10:38)"};
+  struct trace_t trace = {NULL, NULL, 9, LOCATE_parser_prod___PNode___parent};
+  val_t *variable = NULL;
+  struct WBT_ **closurevariable = NULL;
   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, "parser_prod::PNode::parent= (src/parser//parser_prod.nit:9,2--10:38)"};
+  struct trace_t trace = {NULL, NULL, 9, LOCATE_parser_prod___PNode___parent__eq};
+  val_t *variable = NULL;
+  struct WBT_ **closurevariable = NULL;
   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, "parser_prod::PNode::remove_child (src/parser//parser_prod.nit:12,2--15:27)"};
-  val_t variable0;
+  struct trace_t trace = {NULL, NULL, 12, LOCATE_parser_prod___PNode___remove_child};
+  val_t variable[3];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  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*/;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  CALL_parser_prod___PNode___replace_child(variable[0])(variable[0],  variable[1] /*child*/,  NIT_NULL /*null*/) /*PNode::replace_child*/;
+  return_label0: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___PNode___replace_child(val_t  self, val_t  param0, val_t  param1) {
-  struct trace_t trace = {NULL, "parser_prod::PNode::replace_child (src/parser//parser_prod.nit:18,2--19:54)"};
+  struct trace_t trace = {NULL, NULL, 18, LOCATE_parser_prod___PNode___replace_child};
+  val_t *variable = NULL;
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  fprintf(stderr, "Deferred method replace_child called (src/parser//parser_prod.nit:18,2)\n");
+  trace.file = LOCATE_parser_prod;
+  fprintf(stderr, "Deferred method called");
+  fprintf(stderr, " (%s:%d)\n", LOCATE_parser_prod, 18);
   nit_exit(1);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___PNode___replace_with(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::PNode::replace_with (src/parser//parser_prod.nit:21,2--25:35)"};
-  val_t variable0;
-  val_t variable1;
+  struct trace_t trace = {NULL, NULL, 21, LOCATE_parser_prod___PNode___replace_with};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  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*/) /*PNode::==*/)))))));
-  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*/;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_prod___PNode____parent(variable[0]) /*PNode::_parent*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_prod___PNode____parent(variable[0]) /*PNode::_parent*/;
+    CALL_parser_prod___PNode___replace_child(variable[3])(variable[3], variable[0],  variable[1] /*node*/) /*PNode::replace_child*/;
   }
+  return_label1: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___PNode___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::PNode::visit_all (src/parser//parser_prod.nit:29,2--31:26)"};
+  struct trace_t trace = {NULL, NULL, 29, LOCATE_parser_prod___PNode___visit_all};
+  val_t *variable = NULL;
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  fprintf(stderr, "Deferred method visit_all called (src/parser//parser_prod.nit:29,2)\n");
+  trace.file = LOCATE_parser_prod;
+  fprintf(stderr, "Deferred method called");
+  fprintf(stderr, " (%s:%d)\n", LOCATE_parser_prod, 29);
   nit_exit(1);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___PNode___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::PNode::visit_all_reverse (src/parser//parser_prod.nit:33,2--35:34)"};
+  struct trace_t trace = {NULL, NULL, 33, LOCATE_parser_prod___PNode___visit_all_reverse};
+  val_t *variable = NULL;
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  fprintf(stderr, "Deferred method visit_all_reverse called (src/parser//parser_prod.nit:33,2)\n");
+  trace.file = LOCATE_parser_prod;
+  fprintf(stderr, "Deferred method called");
+  fprintf(stderr, " (%s:%d)\n", LOCATE_parser_prod, 33);
   nit_exit(1);
   tracehead = trace.prev;
   return;
 }
 val_t parser_prod___PNode___locate(val_t  self) {
-  struct trace_t trace = {NULL, "parser_prod::PNode::locate (src/parser//parser_prod.nit:37,2--38:20)"};
+  struct trace_t trace = {NULL, NULL, 37, LOCATE_parser_prod___PNode___locate};
+  val_t *variable = NULL;
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  fprintf(stderr, "Deferred method locate called (src/parser//parser_prod.nit:37,2)\n");
+  trace.file = LOCATE_parser_prod;
+  fprintf(stderr, "Deferred method called");
+  fprintf(stderr, " (%s:%d)\n", LOCATE_parser_prod, 37);
+  nit_exit(1);
+  tracehead = trace.prev;
+  return NIT_NULL;
+}
+val_t parser_prod___PNode___line_number(val_t  self) {
+  struct trace_t trace = {NULL, NULL, 40, LOCATE_parser_prod___PNode___line_number};
+  val_t *variable = NULL;
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  fprintf(stderr, "Deferred method called");
+  fprintf(stderr, " (%s:%d)\n", LOCATE_parser_prod, 40);
   nit_exit(1);
   tracehead = trace.prev;
   return NIT_NULL;
 }
 void parser_prod___PNode___printl(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::PNode::printl (src/parser//parser_prod.nit:40,2--43:27)"};
-  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;
-  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) /*PNode::print*/;
+  struct trace_t trace = {NULL, NULL, 43, LOCATE_parser_prod___PNode___printl};
+  static val_t once_value_3 = NIT_NULL; /* Once value for string variable[4]*/
+  static val_t once_value_4 = NIT_NULL; /* Once value for string variable[4]*/
+  static val_t once_value_5 = NIT_NULL; /* Once value for string variable[4]*/
+  val_t variable[5];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  variable[3] = NEW_Array_array___Array___with_capacity(TAG_Int(5)) /*new Array[String]*/ /* Ensure var: Array (for super-string)*/;
+  /* Register variable[4]: Once String constant */
+  if (once_value_3 != NIT_NULL) variable[4] = once_value_3;
+  else {
+    variable[4] = NEW_String_string___String___with_native(BOX_NativeString(""), TAG_Int(0)) /*new String*/;
+    once_value_3 = variable[4];
+  }
+  /* Register variable[4]: Result */
+  /* Ensure var variable[4]: super-string element*/
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[4]) /*AbstractArray::add*/;
+  /* Register variable[4]: Result */
+  variable[4] = CALL_parser_prod___PNode___locate(variable[0])(variable[0]) /*PNode::locate*/;
+  /* Ensure var variable[4]: super-string element*/
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[4]) /*AbstractArray::add*/;
+  /* Register variable[4]: Once String constant */
+  if (once_value_4 != NIT_NULL) variable[4] = once_value_4;
+  else {
+    variable[4] = NEW_String_string___String___with_native(BOX_NativeString(": "), TAG_Int(2)) /*new String*/;
+    once_value_4 = variable[4];
+  }
+  /* Register variable[4]: Result */
+  /* Ensure var variable[4]: super-string element*/
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[4]) /*AbstractArray::add*/;
+  variable[4] =  variable[1] /*str*/ /* Ensure var: super-string element*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[4]) /*AbstractArray::add*/;
+  /* Register variable[4]: Once String constant */
+  if (once_value_5 != NIT_NULL) variable[4] = once_value_5;
+  else {
+    variable[4] = NEW_String_string___String___with_native(BOX_NativeString("\n"), TAG_Int(1)) /*new String*/;
+    once_value_5 = variable[4];
+  }
+  /* Register variable[4]: Result */
+  /* Ensure var variable[4]: super-string element*/
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[4]) /*AbstractArray::add*/;
+  /* Register variable[3]: Result */
+  variable[3] = CALL_string___Object___to_s(variable[3])(variable[3]) /*Object::to_s*/;
+  CALL_file___Object___print(variable[0])(variable[0], variable[3]) /*Object::print*/;
+  return_label2: while(false);
+  tracehead = trace.prev;
+  return;
+}
+void parser_prod___Token___replace_child(val_t  self, val_t  param0, val_t  param1) {
+  struct trace_t trace = {NULL, NULL, 53, LOCATE_parser_prod___Token___replace_child};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Local variable */
+  variable[2] =  param1;
+  /* Register variable[3]: Method return value and escape marker */
+  return_label6: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___Token___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::Token::visit_all (src/parser//parser_prod.nit:48,2--32)"};
-  val_t variable0;
-  trace.prev = tracehead; tracehead = &trace;
-  variable0 =  param0;
+  struct trace_t trace = {NULL, NULL, 51, LOCATE_parser_prod___Token___visit_all};
+  val_t variable[3];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  return_label7: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___Token___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::Token::visit_all_reverse (src/parser//parser_prod.nit:49,2--40)"};
-  val_t variable0;
+  struct trace_t trace = {NULL, NULL, 52, LOCATE_parser_prod___Token___visit_all_reverse};
+  val_t variable[3];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  variable0 =  param0;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  return_label8: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___Token___replace_child(val_t  self, val_t  param0, val_t  param1) {
-  struct trace_t trace = {NULL, "parser_prod::Token::replace_child (src/parser//parser_prod.nit:50,2--60)"};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  variable0 =  param0;
-  variable1 =  param1;
+val_t parser_prod___Token___locate(val_t  self) {
+  struct trace_t trace = {NULL, NULL, 55, LOCATE_parser_prod___Token___locate};
+  static val_t once_value_10 = NIT_NULL; /* Once value for string variable[3]*/
+  static val_t once_value_11 = NIT_NULL; /* Once value for string variable[3]*/
+  static val_t once_value_12 = NIT_NULL; /* Once value for string variable[3]*/
+  static val_t once_value_13 = NIT_NULL; /* Once value for string variable[3]*/
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Method return value and escape marker */
+  variable[2] = NEW_Array_array___Array___with_capacity(TAG_Int(7)) /*new Array[String]*/ /* Ensure var: Array (for super-string)*/;
+  /* Register variable[3]: Once String constant */
+  if (once_value_10 != NIT_NULL) variable[3] = once_value_10;
+  else {
+    variable[3] = NEW_String_string___String___with_native(BOX_NativeString(""), TAG_Int(0)) /*new String*/;
+    once_value_10 = variable[3];
+  }
+  /* Register variable[3]: Result */
+  /* Ensure var variable[3]: super-string element*/
+  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[3]) /*AbstractArray::add*/;
+  /* Register variable[3]: Result */
+  variable[3] = CALL_lexer___Token___filename(variable[0])(variable[0]) /*Token::filename*/;
+  /* Ensure var variable[3]: super-string element*/
+  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[3]) /*AbstractArray::add*/;
+  /* Register variable[3]: Once String constant */
+  if (once_value_11 != NIT_NULL) variable[3] = once_value_11;
+  else {
+    variable[3] = NEW_String_string___String___with_native(BOX_NativeString(":"), TAG_Int(1)) /*new String*/;
+    once_value_11 = variable[3];
+  }
+  /* Register variable[3]: Result */
+  /* Ensure var variable[3]: super-string element*/
+  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[3]) /*AbstractArray::add*/;
+  /* Register variable[3]: Result */
+  variable[3] = CALL_lexer___Token___line(variable[0])(variable[0]) /*Token::line*/;
+  /* Ensure var variable[3]: super-string element*/
+  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], CALL_string___Object___to_s(variable[3])(variable[3]) /*Object::to_s*/) /*AbstractArray::add*/;
+  /* Register variable[3]: Once String constant */
+  if (once_value_12 != NIT_NULL) variable[3] = once_value_12;
+  else {
+    variable[3] = NEW_String_string___String___with_native(BOX_NativeString(","), TAG_Int(1)) /*new String*/;
+    once_value_12 = variable[3];
+  }
+  /* Register variable[3]: Result */
+  /* Ensure var variable[3]: super-string element*/
+  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[3]) /*AbstractArray::add*/;
+  /* Register variable[3]: Result */
+  variable[3] = CALL_lexer___Token___pos(variable[0])(variable[0]) /*Token::pos*/;
+  /* Ensure var variable[3]: super-string element*/
+  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], CALL_string___Object___to_s(variable[3])(variable[3]) /*Object::to_s*/) /*AbstractArray::add*/;
+  /* Register variable[3]: Once String constant */
+  if (once_value_13 != NIT_NULL) variable[3] = once_value_13;
+  else {
+    variable[3] = NEW_String_string___String___with_native(BOX_NativeString(""), TAG_Int(0)) /*new String*/;
+    once_value_13 = variable[3];
+  }
+  /* Register variable[3]: Result */
+  /* Ensure var variable[3]: super-string element*/
+  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[3]) /*AbstractArray::add*/;
+  /* Register variable[2]: Result */
+  variable[2] = CALL_string___Object___to_s(variable[2])(variable[2]) /*Object::to_s*/;
+  variable[1] = variable[2];
+  goto return_label9;
+  return_label9: while(false);
+  tracehead = trace.prev;
+  return variable[1];
+}
+val_t parser_prod___Token___line_number(val_t  self) {
+  struct trace_t trace = {NULL, NULL, 60, LOCATE_parser_prod___Token___line_number};
+  val_t variable[3];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Method return value and escape marker */
+  /* Register variable[2]: Result */
+  variable[2] = CALL_lexer___Token___line(variable[0])(variable[0]) /*Token::line*/;
+  variable[1] = variable[2];
+  goto return_label14;
+  return_label14: while(false);
+  tracehead = trace.prev;
+  return variable[1];
+}
+void parser_prod___Prod___replace_with(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 86, LOCATE_parser_prod___Prod___replace_with};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  CALL_SUPER_parser_prod___Prod___replace_with(variable[0])(variable[0], variable[1]) /*super Prod::replace_with*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(( variable[1] /*n*/==NIT_NULL) || VAL_ISA( variable[1] /*n*/, COLOR_Prod, ID_Prod)) /*cast Prod*/;
+  if (!UNTAG_Bool(variable[3])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___Prod___replace_with, LOCATE_parser_prod, 89); nit_exit(1);}
+  /* Register variable[3]: Result */
+  variable[3] = CALL_parser_prod___Prod___first_token(variable[0])(variable[0]) /*Prod::first_token*/;
+  CALL_parser_prod___Prod___first_token__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[3]) /*Prod::first_token=*/;
+  /* Register variable[3]: Result */
+  variable[3] = CALL_parser_prod___Prod___last_token(variable[0])(variable[0]) /*Prod::last_token*/;
+  CALL_parser_prod___Prod___last_token__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[3]) /*Prod::last_token=*/;
+  return_label15: while(false);
   tracehead = trace.prev;
   return;
 }
-val_t parser_prod___Token___locate(val_t  self) {
-  struct trace_t trace = {NULL, "parser_prod::Token::locate (src/parser//parser_prod.nit:52,2--54:34)"};
-  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;
-  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);
+val_t parser_prod___Prod___locate(val_t  self) {
+  struct trace_t trace = {NULL, NULL, 70, LOCATE_parser_prod___Prod___locate};
+    static val_t once_value_17 = NIT_NULL; /* Once value for string variable[2]*/
+    static val_t once_value_18 = NIT_NULL; /* Once value for string variable[3]*/
+    static val_t once_value_19 = NIT_NULL; /* Once value for string variable[3]*/
+    static val_t once_value_20 = NIT_NULL; /* Once value for string variable[4]*/
+    static val_t once_value_21 = NIT_NULL; /* Once value for string variable[4]*/
+    static val_t once_value_22 = NIT_NULL; /* Once value for string variable[4]*/
+    static val_t once_value_23 = NIT_NULL; /* Once value for string variable[4]*/
+    static val_t once_value_24 = NIT_NULL; /* Once value for string variable[4]*/
+    static val_t once_value_25 = NIT_NULL; /* Once value for string variable[4]*/
+    static val_t once_value_26 = NIT_NULL; /* Once value for string variable[4]*/
+  val_t variable[5];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Method return value and escape marker */
+  /* Register variable[2]: Result */
+  variable[2] = CALL_parser_prod___Prod___first_token(variable[0])(variable[0]) /*Prod::first_token*/;
+  /* Register variable[2]: Result */
+  variable[2] = TAG_Bool((variable[2] ==  NIT_NULL /*null*/) || ((variable[2] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[2])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[2], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[2])(variable[2],  NIT_NULL /*null*/) /*Object::==*/)))));
+  if (UNTAG_Bool(variable[2])) { /*if*/
+    /* Register variable[2]: Once String constant */
+    if (once_value_17 != NIT_NULL) variable[2] = once_value_17;
+    else {
+      variable[2] = NEW_String_string___String___with_native(BOX_NativeString("????"), TAG_Int(4)) /*new String*/;
+      once_value_17 = variable[2];
+    }
+    /* Register variable[2]: Result */
+    variable[1] = variable[2];
+    goto return_label16;
+  }
+  /* Register variable[2]: Result */
+  variable[2] = CALL_parser_prod___Prod___last_token(variable[0])(variable[0]) /*Prod::last_token*/;
+  /* Register variable[2]: Result */
+  variable[2] = TAG_Bool((variable[2] ==  NIT_NULL /*null*/) || ((variable[2] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[2])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[2], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[2])(variable[2],  NIT_NULL /*null*/) /*Object::==*/)))));
+  if (UNTAG_Bool(variable[2])) { /*if*/
+    variable[2] = NEW_Array_array___Array___with_capacity(TAG_Int(3)) /*new Array[String]*/ /* Ensure var: Array (for super-string)*/;
+    /* Register variable[3]: Once String constant */
+    if (once_value_18 != NIT_NULL) variable[3] = once_value_18;
+    else {
+      variable[3] = NEW_String_string___String___with_native(BOX_NativeString(""), TAG_Int(0)) /*new String*/;
+      once_value_18 = variable[3];
+    }
+    /* Register variable[3]: Result */
+    /* Ensure var variable[3]: super-string element*/
+    CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[3]) /*AbstractArray::add*/;
+    /* Register variable[3]: Result */
+    variable[3] = CALL_parser_prod___Prod___first_token(variable[0])(variable[0]) /*Prod::first_token*/;
+    /* Register variable[3]: Result */
+    variable[3] = CALL_parser_prod___PNode___locate(variable[3])(variable[3]) /*Token::locate*/;
+    /* Ensure var variable[3]: super-string element*/
+    CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[3]) /*AbstractArray::add*/;
+    /* Register variable[3]: Once String constant */
+    if (once_value_19 != NIT_NULL) variable[3] = once_value_19;
+    else {
+      variable[3] = NEW_String_string___String___with_native(BOX_NativeString("--????"), TAG_Int(6)) /*new String*/;
+      once_value_19 = variable[3];
+    }
+    /* Register variable[3]: Result */
+    /* Ensure var variable[3]: super-string element*/
+    CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[3]) /*AbstractArray::add*/;
+    /* Register variable[2]: Result */
+    variable[2] = CALL_string___Object___to_s(variable[2])(variable[2]) /*Object::to_s*/;
+    variable[1] = variable[2];
+    goto return_label16;
+  }
+  /* Register variable[2]: Local variable */
+  /* Register variable[3]: Result */
+  variable[3] = CALL_parser_prod___Prod___last_token(variable[0])(variable[0]) /*Prod::last_token*/;
+  /* Register variable[3]: Result */
+  variable[3] = CALL_lexer___Token___pos(variable[3])(variable[3]) /*Token::pos*/;
+  /* Register variable[4]: Result */
+  variable[4] = CALL_parser_prod___Prod___last_token(variable[0])(variable[0]) /*Prod::last_token*/;
+  /* Register variable[4]: Result */
+  variable[4] = CALL_lexer___Token___text(variable[4])(variable[4]) /*Token::text*/;
+  /* Register variable[4]: Result */
+  variable[4] = CALL_abstract_collection___Collection___length(variable[4])(variable[4]) /*AbstractArrayRead::length*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Int(UNTAG_Int(variable[3])+UNTAG_Int(variable[4]));
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Int(UNTAG_Int(variable[3])-UNTAG_Int( TAG_Int(1)));
+  variable[2] = variable[3];
+  /* Register variable[3]: Result */
+  variable[3] = CALL_parser_prod___Prod___first_token(variable[0])(variable[0]) /*Prod::first_token*/;
+  /* Register variable[3]: Result */
+  variable[3] = CALL_lexer___Token___line(variable[3])(variable[3]) /*Token::line*/;
+  /* Register variable[4]: Result */
+  variable[4] = CALL_parser_prod___Prod___last_token(variable[0])(variable[0]) /*Prod::last_token*/;
+  /* Register variable[4]: Result */
+  variable[4] = CALL_lexer___Token___line(variable[4])(variable[4]) /*Token::line*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool((variable[3])==(variable[4]));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    variable[3] = NEW_Array_array___Array___with_capacity(TAG_Int(5)) /*new Array[String]*/ /* Ensure var: Array (for super-string)*/;
+    /* Register variable[4]: Once String constant */
+    if (once_value_20 != NIT_NULL) variable[4] = once_value_20;
+    else {
+      variable[4] = NEW_String_string___String___with_native(BOX_NativeString(""), TAG_Int(0)) /*new String*/;
+      once_value_20 = variable[4];
+    }
+    /* Register variable[4]: Result */
+    /* Ensure var variable[4]: super-string element*/
+    CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[4]) /*AbstractArray::add*/;
+    /* Register variable[4]: Result */
+    variable[4] = CALL_parser_prod___Prod___first_token(variable[0])(variable[0]) /*Prod::first_token*/;
+    /* Register variable[4]: Result */
+    variable[4] = CALL_parser_prod___PNode___locate(variable[4])(variable[4]) /*Token::locate*/;
+    /* Ensure var variable[4]: super-string element*/
+    CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[4]) /*AbstractArray::add*/;
+    /* Register variable[4]: Once String constant */
+    if (once_value_21 != NIT_NULL) variable[4] = once_value_21;
+    else {
+      variable[4] = NEW_String_string___String___with_native(BOX_NativeString("--"), TAG_Int(2)) /*new String*/;
+      once_value_21 = variable[4];
+    }
+    /* Register variable[4]: Result */
+    /* Ensure var variable[4]: super-string element*/
+    CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[4]) /*AbstractArray::add*/;
+    variable[4] =  variable[2] /*lastpos*/ /* Ensure var: super-string element*/;
+    CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], CALL_string___Object___to_s(variable[4])(variable[4]) /*Object::to_s*/) /*AbstractArray::add*/;
+    /* Register variable[4]: Once String constant */
+    if (once_value_22 != NIT_NULL) variable[4] = once_value_22;
+    else {
+      variable[4] = NEW_String_string___String___with_native(BOX_NativeString(""), TAG_Int(0)) /*new String*/;
+      once_value_22 = variable[4];
+    }
+    /* Register variable[4]: Result */
+    /* Ensure var variable[4]: super-string element*/
+    CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[4]) /*AbstractArray::add*/;
+    /* Register variable[3]: Result */
+    variable[3] = CALL_string___Object___to_s(variable[3])(variable[3]) /*Object::to_s*/;
+    variable[1] = variable[3];
+    goto return_label16;
+  } else { /*if*/
+    variable[3] = NEW_Array_array___Array___with_capacity(TAG_Int(7)) /*new Array[String]*/ /* Ensure var: Array (for super-string)*/;
+    /* Register variable[4]: Once String constant */
+    if (once_value_23 != NIT_NULL) variable[4] = once_value_23;
+    else {
+      variable[4] = NEW_String_string___String___with_native(BOX_NativeString(""), TAG_Int(0)) /*new String*/;
+      once_value_23 = variable[4];
+    }
+    /* Register variable[4]: Result */
+    /* Ensure var variable[4]: super-string element*/
+    CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[4]) /*AbstractArray::add*/;
+    /* Register variable[4]: Result */
+    variable[4] = CALL_parser_prod___Prod___first_token(variable[0])(variable[0]) /*Prod::first_token*/;
+    /* Register variable[4]: Result */
+    variable[4] = CALL_parser_prod___PNode___locate(variable[4])(variable[4]) /*Token::locate*/;
+    /* Ensure var variable[4]: super-string element*/
+    CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[4]) /*AbstractArray::add*/;
+    /* Register variable[4]: Once String constant */
+    if (once_value_24 != NIT_NULL) variable[4] = once_value_24;
+    else {
+      variable[4] = NEW_String_string___String___with_native(BOX_NativeString("--"), TAG_Int(2)) /*new String*/;
+      once_value_24 = variable[4];
+    }
+    /* Register variable[4]: Result */
+    /* Ensure var variable[4]: super-string element*/
+    CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[4]) /*AbstractArray::add*/;
+    /* Register variable[4]: Result */
+    variable[4] = CALL_parser_prod___Prod___last_token(variable[0])(variable[0]) /*Prod::last_token*/;
+    /* Register variable[4]: Result */
+    variable[4] = CALL_lexer___Token___line(variable[4])(variable[4]) /*Token::line*/;
+    /* Ensure var variable[4]: super-string element*/
+    CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], CALL_string___Object___to_s(variable[4])(variable[4]) /*Object::to_s*/) /*AbstractArray::add*/;
+    /* Register variable[4]: Once String constant */
+    if (once_value_25 != NIT_NULL) variable[4] = once_value_25;
+    else {
+      variable[4] = NEW_String_string___String___with_native(BOX_NativeString(":"), TAG_Int(1)) /*new String*/;
+      once_value_25 = variable[4];
+    }
+    /* Register variable[4]: Result */
+    /* Ensure var variable[4]: super-string element*/
+    CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[4]) /*AbstractArray::add*/;
+    variable[4] =  variable[2] /*lastpos*/ /* Ensure var: super-string element*/;
+    CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], CALL_string___Object___to_s(variable[4])(variable[4]) /*Object::to_s*/) /*AbstractArray::add*/;
+    /* Register variable[4]: Once String constant */
+    if (once_value_26 != NIT_NULL) variable[4] = once_value_26;
+    else {
+      variable[4] = NEW_String_string___String___with_native(BOX_NativeString(""), TAG_Int(0)) /*new String*/;
+      once_value_26 = variable[4];
+    }
+    /* Register variable[4]: Result */
+    /* Ensure var variable[4]: super-string element*/
+    CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[4]) /*AbstractArray::add*/;
+    /* Register variable[3]: Result */
+    variable[3] = CALL_string___Object___to_s(variable[3])(variable[3]) /*Object::to_s*/;
+    variable[1] = variable[3];
+    goto return_label16;
+  }
+  return_label16: while(false);
+  tracehead = trace.prev;
+  return variable[1];
+}
+val_t parser_prod___Prod___line_number(val_t  self) {
+  struct trace_t trace = {NULL, NULL, 94, LOCATE_parser_prod___Prod___line_number};
+  val_t variable[3];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Method return value and escape marker */
+  /* Register variable[2]: Result */
+  variable[2] = CALL_parser_prod___Prod___first_token(variable[0])(variable[0]) /*Prod::first_token*/;
+  /* Register variable[2]: Result */
+  variable[2] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[2] ==  NIT_NULL /*null*/) || ((variable[2] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[2])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[2], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[2])(variable[2],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[2])) { /*if*/
+    /* Register variable[2]: Result */
+    variable[2] = CALL_parser_prod___Prod___first_token(variable[0])(variable[0]) /*Prod::first_token*/;
+    /* Register variable[2]: Result */
+    variable[2] = CALL_lexer___Token___line(variable[2])(variable[2]) /*Token::line*/;
+    variable[1] = variable[2];
+    goto return_label27;
+  } else { /*if*/
+    variable[1] =  TAG_Int(0);
+    goto return_label27;
+  }
+  return_label27: while(false);
   tracehead = trace.prev;
-  return variable0;
+  return variable[1];
 }
 val_t parser_prod___Prod___first_token(val_t  self) {
-  struct trace_t trace = {NULL, "parser_prod::Prod::first_token (src/parser//parser_prod.nit:59,2--60:43)"};
+  struct trace_t trace = {NULL, NULL, 64, LOCATE_parser_prod___Prod___first_token};
+  val_t *variable = NULL;
+  struct WBT_ **closurevariable = NULL;
   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, "parser_prod::Prod::first_token= (src/parser//parser_prod.nit:59,2--60:43)"};
+  struct trace_t trace = {NULL, NULL, 64, LOCATE_parser_prod___Prod___first_token__eq};
+  val_t *variable = NULL;
+  struct WBT_ **closurevariable = NULL;
   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, "parser_prod::Prod::last_token (src/parser//parser_prod.nit:62,2--63:42)"};
+  struct trace_t trace = {NULL, NULL, 67, LOCATE_parser_prod___Prod___last_token};
+  val_t *variable = NULL;
+  struct WBT_ **closurevariable = NULL;
   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, "parser_prod::Prod::last_token= (src/parser//parser_prod.nit:62,2--63:42)"};
+  struct trace_t trace = {NULL, NULL, 67, LOCATE_parser_prod___Prod___last_token__eq};
+  val_t *variable = NULL;
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
   ATTR_parser_prod___Prod____last_token( self) /*Prod::_last_token*/ =  param0;
   tracehead = trace.prev;
   return;
 }
-val_t parser_prod___Prod___locate(val_t  self) {
-  struct trace_t trace = {NULL, "parser_prod::Prod::locate (src/parser//parser_prod.nit:65,2--74:61)"};
-  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;
-  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*/) /*Token::==*/)))));
-  if (UNTAG_Bool(variable0)) { /*if*/
-    variable0 = NEW_string___String___with_native(BOX_NativeString("????"), TAG_Int(4)); /*new String*/
-    goto return_label7;
-  }
-  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) /*String::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_label7;
-  } 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_label7;
-  }
-  return_label7: while(false);
-  tracehead = trace.prev;
-  return variable0;
-}
-void parser_prod___Prod___replace_with(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::Prod::replace_with (src/parser//parser_prod.nit:78,2--83:27)"};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  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 failed: src/parser//parser_prod.nit:81,3--19\n"); 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;
-}
 void parser_prod___Visitor___visit(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::Visitor::visit (src/parser//parser_prod.nit:89,9--92:27)"};
+  struct trace_t trace = {NULL, NULL, 106, LOCATE_parser_prod___Visitor___visit};
+  val_t *variable = NULL;
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  fprintf(stderr, "Deferred method visit called (src/parser//parser_prod.nit:89,9)\n");
+  trace.file = LOCATE_parser_prod;
+  fprintf(stderr, "Deferred method called");
+  fprintf(stderr, " (%s:%d)\n", LOCATE_parser_prod, 106);
   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, "parser_prod::AModule::n_packagedecl= (src/parser//parser_prod.nit:96,5--100:20)"};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  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*/) /*PPackagedecl::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PPackagedecl::parent=*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AModule___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, "parser_prod::AModule::empty_init (src/parser//parser_prod.nit:104,5--27)"};
+void parser_prod___Visitor___init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 0, LOCATE_parser_prod___Visitor___init};
+  val_t *variable = NULL;
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AModule].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AModule].i] = 1;
+  trace.file = LOCATE_parser_prod;
   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, "parser_prod::AModule::init_amodule (src/parser//parser_prod.nit:106,5--126:17)"};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  val_t variable3;
-    val_t variable4;
-    val_t variable5;
-  trace.prev = tracehead; tracehead = &trace;
-  variable0 =  param0;
-  variable1 =  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*/) /*PPackagedecl::==*/)))))));
-  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) /*PPackagedecl::parent=*/;
-  }
-  variable3 = NEW_list___List___init(); /*new List[PImport]*/
-  ATTR_parser_nodes___AModule____n_imports( self) /*AModule::_n_imports*/ = variable3;
-  variable3 = ((array___AbstractArray___iterator_t)CALL( variable1 /*n_imports*/,COLOR_abstract_collection___Collection___iterator))( variable1 /*n_imports*/) /*Array::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 failed: src/parser//parser_prod.nit:118,3--22\n"); 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*/) /*List::add*/;
-    ((parser_prod___PNode___parent__eq_t)CALL( variable4 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable4 /*n*/,  self) /*PImport::parent=*/;
-    continue_12: while(0);
-    ((array___ArrayIterator___next_t)CALL(variable3,COLOR_abstract_collection___Iterator___next))(variable3) /*ArrayIterator::next*/;
-  }
-  break_12: while(0);
-  variable3 = NEW_list___List___init(); /*new List[PClassdef]*/
-  ATTR_parser_nodes___AModule____n_classdefs( self) /*AModule::_n_classdefs*/ = variable3;
-  variable3 = ((array___AbstractArray___iterator_t)CALL( variable2 /*n_classdefs*/,COLOR_abstract_collection___Collection___iterator))( variable2 /*n_classdefs*/) /*Array::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 failed: src/parser//parser_prod.nit:124,3--24\n"); 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*/) /*List::add*/;
-    ((parser_prod___PNode___parent__eq_t)CALL( variable4 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable4 /*n*/,  self) /*PClassdef::parent=*/;
-    continue_13: while(0);
-    ((array___ArrayIterator___next_t)CALL(variable3,COLOR_abstract_collection___Iterator___next))(variable3) /*ArrayIterator::next*/;
+void parser_prod___AModule___n_packagedecl__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 113, LOCATE_parser_prod___AModule___n_packagedecl__eq};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  ATTR_parser_nodes___AModule____n_packagedecl(variable[0]) /*AModule::_n_packagedecl*/ =  variable[1] /*n*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[0]) /*PNode::parent=*/;
   }
-  break_13: while(0);
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AModule].i] = 1;
+  return_label28: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AModule___replace_child(val_t  self, val_t  param0, val_t  param1) {
-  struct trace_t trace = {NULL, "parser_prod::AModule::replace_child (src/parser//parser_prod.nit:130,5--164:22)"};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  val_t variable3;
-    val_t variable4;
-  trace.prev = tracehead; tracehead = &trace;
-  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*/) /*PNode::==*/)))))));
-  if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert failed: src/parser//parser_prod.nit:132,9--32\n"); 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*/) /*PPackagedecl::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*PNode::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_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 failed: src/parser//parser_prod.nit:136,3--35\n"); 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_label14;
-  }
-  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[Int]*/
-  variable2 = variable3;
-  variable2 = ((range___Range___iterator_t)CALL(variable2,COLOR_abstract_collection___Collection___iterator))(variable2) /*Range::iterator*/;
+  struct trace_t trace = {NULL, NULL, 148, LOCATE_parser_prod___AModule___replace_child};
+  val_t variable[8];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Local variable */
+  variable[2] =  param1;
+  /* Register variable[3]: Method return value and escape marker */
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AModule___replace_child, LOCATE_parser_prod, 150); nit_exit(1);}
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___AModule____n_packagedecl(variable[0]) /*AModule::_n_packagedecl*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*PNode::parent=*/;
+      /* Register variable[4]: Result */
+      variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PPackagedecl, ID_PPackagedecl)) /*cast PPackagedecl*/;
+      if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AModule___replace_child, LOCATE_parser_prod, 154); nit_exit(1);}
+      ATTR_parser_nodes___AModule____n_packagedecl(variable[0]) /*AModule::_n_packagedecl*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      ATTR_parser_nodes___AModule____n_packagedecl(variable[0]) /*AModule::_n_packagedecl*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label29;
+  }
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___AModule____n_imports(variable[0]) /*AModule::_n_imports*/;
+  /* Register variable[4]: Result */
+  variable[4] = CALL_abstract_collection___Collection___length(variable[4])(variable[4]) /*List::length*/;
+  /* Register variable[4]: Result */
+  variable[4] = NEW_Range_range___Range___without_last( TAG_Int(0), variable[4]) /*new Range[Int]*/;
+  /* Register variable[4]: For iterator */
+  variable[4] = CALL_abstract_collection___Collection___iterator(variable[4])(variable[4]) /*Range::iterator*/;
   while (true) { /*for*/
-    variable3 = ((abstract_collection___Iterator___is_ok_t)CALL(variable2,COLOR_abstract_collection___Iterator___is_ok))(variable2) /*Iterator::is_ok*/;
-    if (!UNTAG_Bool(variable3)) break; /*for*/
-    variable3 = ((abstract_collection___Iterator___item_t)CALL(variable2,COLOR_abstract_collection___Iterator___item))(variable2) /*Iterator::item*/;
-    variable4 = ATTR_parser_nodes___AModule____n_imports( self) /*AModule::_n_imports*/;
-    variable4 = ((list___List_____bra_t)CALL(variable4,COLOR_abstract_collection___Map_____bra))(variable4,  variable3 /*i*/) /*List::[]*/;
-    variable4 = TAG_Bool((variable4 ==  variable0 /*old_child*/) || ((variable4 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable4,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable4, variable0 /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable4,COLOR_kernel___Object_____eqeq))(variable4,  variable0 /*old_child*/) /*PImport::==*/)))));
-    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*/) /*PNode::==*/)))))));
-      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 failed: src/parser//parser_prod.nit:146,7--34\n"); 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) /*PImport::parent=*/;
+    /* Register variable[5]: For 'is_ok' result */
+    variable[5] = CALL_abstract_collection___Iterator___is_ok(variable[4])(variable[4]) /*Iterator::is_ok*/;
+    if (!UNTAG_Bool(variable[5])) break; /*for*/
+    variable[5] = CALL_abstract_collection___Iterator___item(variable[4])(variable[4]) /*Iterator::item*/ /* Ensure var: For item*/;
+    /* Register variable[6]: Local variable */
+    variable[6] = variable[5];
+    /* Register variable[7]: Result */
+    variable[7] = ATTR_parser_nodes___AModule____n_imports(variable[0]) /*AModule::_n_imports*/;
+    /* Register variable[7]: Result */
+    variable[7] = CALL_abstract_collection___MapRead_____bra(variable[7])(variable[7],  variable[6] /*i*/) /*List::[]*/;
+    /* Register variable[7]: Result */
+    variable[7] = TAG_Bool((variable[7] ==  variable[1] /*old_child*/) || ((variable[7] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[7])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[7], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[7])(variable[7],  variable[1] /*old_child*/) /*Object::==*/)))));
+    if (UNTAG_Bool(variable[7])) { /*if*/
+      /* Register variable[7]: Result */
+      variable[7] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+      if (UNTAG_Bool(variable[7])) { /*if*/
+        /* Register variable[7]: Result */
+        variable[7] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PImport, ID_PImport)) /*cast PImport*/;
+        if (!UNTAG_Bool(variable[7])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AModule___replace_child, LOCATE_parser_prod, 164); nit_exit(1);}
+        /* Register variable[7]: Result */
+        variable[7] = ATTR_parser_nodes___AModule____n_imports(variable[0]) /*AModule::_n_imports*/;
+        CALL_abstract_collection___Map_____braeq(variable[7])(variable[7],  variable[6] /*i*/,  variable[2] /*new_child*/) /*List::[]=*/;
+        CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*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*/;
+        /* Register variable[7]: Result */
+        variable[7] = ATTR_parser_nodes___AModule____n_imports(variable[0]) /*AModule::_n_imports*/;
+        CALL_abstract_collection___Map___remove_at(variable[7])(variable[7],  variable[6] /*i*/) /*List::remove_at*/;
       }
-      goto return_label14;
-    }
-    continue_15: while(0);
-    ((abstract_collection___Iterator___next_t)CALL(variable2,COLOR_abstract_collection___Iterator___next))(variable2) /*Iterator::next*/;
-  }
-  break_15: 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[Int]*/
-  variable2 = variable3;
-  variable2 = ((range___Range___iterator_t)CALL(variable2,COLOR_abstract_collection___Collection___iterator))(variable2) /*Range::iterator*/;
+      goto return_label29;
+    }
+    continue_30: while(0);
+    CALL_abstract_collection___Iterator___next(variable[4])(variable[4]) /*Iterator::next*/;
+  }
+  break_30: while(0);
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___AModule____n_classdefs(variable[0]) /*AModule::_n_classdefs*/;
+  /* Register variable[4]: Result */
+  variable[4] = CALL_abstract_collection___Collection___length(variable[4])(variable[4]) /*List::length*/;
+  /* Register variable[4]: Result */
+  variable[4] = NEW_Range_range___Range___without_last( TAG_Int(0), variable[4]) /*new Range[Int]*/;
+  /* Register variable[4]: For iterator */
+  variable[4] = CALL_abstract_collection___Collection___iterator(variable[4])(variable[4]) /*Range::iterator*/;
   while (true) { /*for*/
-    variable3 = ((abstract_collection___Iterator___is_ok_t)CALL(variable2,COLOR_abstract_collection___Iterator___is_ok))(variable2) /*Iterator::is_ok*/;
-    if (!UNTAG_Bool(variable3)) break; /*for*/
-    variable3 = ((abstract_collection___Iterator___item_t)CALL(variable2,COLOR_abstract_collection___Iterator___item))(variable2) /*Iterator::item*/;
-    variable4 = ATTR_parser_nodes___AModule____n_classdefs( self) /*AModule::_n_classdefs*/;
-    variable4 = ((list___List_____bra_t)CALL(variable4,COLOR_abstract_collection___Map_____bra))(variable4,  variable3 /*i*/) /*List::[]*/;
-    variable4 = TAG_Bool((variable4 ==  variable0 /*old_child*/) || ((variable4 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable4,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable4, variable0 /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable4,COLOR_kernel___Object_____eqeq))(variable4,  variable0 /*old_child*/) /*PClassdef::==*/)))));
-    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*/) /*PNode::==*/)))))));
-      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 failed: src/parser//parser_prod.nit:158,7--36\n"); 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) /*PClassdef::parent=*/;
+    /* Register variable[5]: For 'is_ok' result */
+    variable[5] = CALL_abstract_collection___Iterator___is_ok(variable[4])(variable[4]) /*Iterator::is_ok*/;
+    if (!UNTAG_Bool(variable[5])) break; /*for*/
+    variable[5] = CALL_abstract_collection___Iterator___item(variable[4])(variable[4]) /*Iterator::item*/ /* Ensure var: For item*/;
+    /* Register variable[6]: Local variable */
+    variable[6] = variable[5];
+    /* Register variable[7]: Result */
+    variable[7] = ATTR_parser_nodes___AModule____n_classdefs(variable[0]) /*AModule::_n_classdefs*/;
+    /* Register variable[7]: Result */
+    variable[7] = CALL_abstract_collection___MapRead_____bra(variable[7])(variable[7],  variable[6] /*i*/) /*List::[]*/;
+    /* Register variable[7]: Result */
+    variable[7] = TAG_Bool((variable[7] ==  variable[1] /*old_child*/) || ((variable[7] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[7])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[7], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[7])(variable[7],  variable[1] /*old_child*/) /*Object::==*/)))));
+    if (UNTAG_Bool(variable[7])) { /*if*/
+      /* Register variable[7]: Result */
+      variable[7] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+      if (UNTAG_Bool(variable[7])) { /*if*/
+        /* Register variable[7]: Result */
+        variable[7] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PClassdef, ID_PClassdef)) /*cast PClassdef*/;
+        if (!UNTAG_Bool(variable[7])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AModule___replace_child, LOCATE_parser_prod, 176); nit_exit(1);}
+        /* Register variable[7]: Result */
+        variable[7] = ATTR_parser_nodes___AModule____n_classdefs(variable[0]) /*AModule::_n_classdefs*/;
+        CALL_abstract_collection___Map_____braeq(variable[7])(variable[7],  variable[6] /*i*/,  variable[2] /*new_child*/) /*List::[]=*/;
+        CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*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*/;
+        /* Register variable[7]: Result */
+        variable[7] = ATTR_parser_nodes___AModule____n_classdefs(variable[0]) /*AModule::_n_classdefs*/;
+        CALL_abstract_collection___Map___remove_at(variable[7])(variable[7],  variable[6] /*i*/) /*List::remove_at*/;
       }
-      goto return_label14;
+      goto return_label29;
     }
-    continue_16: while(0);
-    ((abstract_collection___Iterator___next_t)CALL(variable2,COLOR_abstract_collection___Iterator___next))(variable2) /*Iterator::next*/;
+    continue_31: while(0);
+    CALL_abstract_collection___Iterator___next(variable[4])(variable[4]) /*Iterator::next*/;
   }
-  break_16: while(0);
-  return_label14: while(false);
+  break_31: while(0);
+  return_label29: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AModule___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AModule::visit_all (src/parser//parser_prod.nit:169,5--178:25)"};
-  val_t variable0;
-  val_t variable1;
-    val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  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*/) /*PPackagedecl::==*/)))))));
-  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*/;
+  struct trace_t trace = {NULL, NULL, 187, LOCATE_parser_prod___AModule___visit_all};
+  val_t variable[6];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AModule____n_packagedecl(variable[0]) /*AModule::_n_packagedecl*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AModule____n_packagedecl(variable[0]) /*AModule::_n_packagedecl*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AModule____n_imports(variable[0]) /*AModule::_n_imports*/;
+  /* Register variable[3]: For iterator */
+  variable[3] = CALL_abstract_collection___Collection___iterator(variable[3])(variable[3]) /*List::iterator*/;
   while (true) { /*for*/
-    variable2 = ((list___ListIterator___is_ok_t)CALL(variable1,COLOR_abstract_collection___Iterator___is_ok))(variable1) /*ListIterator::is_ok*/;
-    if (!UNTAG_Bool(variable2)) break; /*for*/
-    variable2 = ((list___ListIterator___item_t)CALL(variable1,COLOR_abstract_collection___Iterator___item))(variable1) /*ListIterator::item*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/,  variable2 /*n*/) /*Visitor::visit*/;
-    continue_18: while(0);
-    ((list___ListIterator___next_t)CALL(variable1,COLOR_abstract_collection___Iterator___next))(variable1) /*ListIterator::next*/;
-  }
-  break_18: 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*/;
+    /* Register variable[4]: For 'is_ok' result */
+    variable[4] = CALL_abstract_collection___Iterator___is_ok(variable[3])(variable[3]) /*ListIterator::is_ok*/;
+    if (!UNTAG_Bool(variable[4])) break; /*for*/
+    variable[4] = CALL_abstract_collection___Iterator___item(variable[3])(variable[3]) /*ListIterator::item*/ /* Ensure var: For item*/;
+    /* Register variable[5]: Local variable */
+    variable[5] = variable[4];
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/,  variable[5] /*n*/) /*Visitor::visit*/;
+    continue_33: while(0);
+    CALL_abstract_collection___Iterator___next(variable[3])(variable[3]) /*ListIterator::next*/;
+  }
+  break_33: while(0);
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AModule____n_classdefs(variable[0]) /*AModule::_n_classdefs*/;
+  /* Register variable[3]: For iterator */
+  variable[3] = CALL_abstract_collection___Collection___iterator(variable[3])(variable[3]) /*List::iterator*/;
   while (true) { /*for*/
-    variable2 = ((list___ListIterator___is_ok_t)CALL(variable1,COLOR_abstract_collection___Iterator___is_ok))(variable1) /*ListIterator::is_ok*/;
-    if (!UNTAG_Bool(variable2)) break; /*for*/
-    variable2 = ((list___ListIterator___item_t)CALL(variable1,COLOR_abstract_collection___Iterator___item))(variable1) /*ListIterator::item*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/,  variable2 /*n*/) /*Visitor::visit*/;
-    continue_19: while(0);
-    ((list___ListIterator___next_t)CALL(variable1,COLOR_abstract_collection___Iterator___next))(variable1) /*ListIterator::next*/;
+    /* Register variable[4]: For 'is_ok' result */
+    variable[4] = CALL_abstract_collection___Iterator___is_ok(variable[3])(variable[3]) /*ListIterator::is_ok*/;
+    if (!UNTAG_Bool(variable[4])) break; /*for*/
+    variable[4] = CALL_abstract_collection___Iterator___item(variable[3])(variable[3]) /*ListIterator::item*/ /* Ensure var: For item*/;
+    /* Register variable[5]: Local variable */
+    variable[5] = variable[4];
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/,  variable[5] /*n*/) /*Visitor::visit*/;
+    continue_34: while(0);
+    CALL_abstract_collection___Iterator___next(variable[3])(variable[3]) /*ListIterator::next*/;
   }
-  break_19: while(0);
+  break_34: while(0);
+  return_label32: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AModule___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AModule::visit_all_reverse (src/parser//parser_prod.nit:182,5--198:11)"};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  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*/) /*PPackagedecl::==*/)))))));
-  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;
+  struct trace_t trace = {NULL, NULL, 200, LOCATE_parser_prod___AModule___visit_all_reverse};
+  val_t variable[5];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AModule____n_packagedecl(variable[0]) /*AModule::_n_packagedecl*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AModule____n_packagedecl(variable[0]) /*AModule::_n_packagedecl*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Local variable */
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___AModule____n_imports(variable[0]) /*AModule::_n_imports*/;
+  /* Register variable[4]: Result */
+  variable[4] = CALL_abstract_collection___Collection___length(variable[4])(variable[4]) /*List::length*/;
+  variable[3] = variable[4];
   while (true) { /*while*/
-    variable2 = TAG_Bool(UNTAG_Int( variable1 /*i*/)>=UNTAG_Int( TAG_Int(0)));
-    if (!UNTAG_Bool(variable2)) break; /* while*/
-    variable2 = ATTR_parser_nodes___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_21: while(0);
-  }
-  break_21: 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;
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(UNTAG_Int( variable[3] /*i*/)>=UNTAG_Int( TAG_Int(0)));
+    if (!UNTAG_Bool(variable[4])) break; /* while*/
+    /* Register variable[4]: Result */
+    variable[4] = ATTR_parser_nodes___AModule____n_imports(variable[0]) /*AModule::_n_imports*/;
+    /* Register variable[4]: Result */
+    variable[4] = CALL_abstract_collection___MapRead_____bra(variable[4])(variable[4],  variable[3] /*i*/) /*List::[]*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[4]) /*Visitor::visit*/;
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Int(UNTAG_Int( variable[3] /*i*/)-UNTAG_Int( TAG_Int(1)));
+    variable[3] = variable[4] /*i=*/;
+    continue_36: while(0);
+  }
+  break_36: while(0);
+  /* Register variable[3]: Local variable */
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___AModule____n_classdefs(variable[0]) /*AModule::_n_classdefs*/;
+  /* Register variable[4]: Result */
+  variable[4] = CALL_abstract_collection___Collection___length(variable[4])(variable[4]) /*List::length*/;
+  variable[3] = variable[4];
   while (true) { /*while*/
-    variable2 = TAG_Bool(UNTAG_Int( variable1 /*i*/)>=UNTAG_Int( TAG_Int(0)));
-    if (!UNTAG_Bool(variable2)) break; /* while*/
-    variable2 = ATTR_parser_nodes___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_22: while(0);
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(UNTAG_Int( variable[3] /*i*/)>=UNTAG_Int( TAG_Int(0)));
+    if (!UNTAG_Bool(variable[4])) break; /* while*/
+    /* Register variable[4]: Result */
+    variable[4] = ATTR_parser_nodes___AModule____n_classdefs(variable[0]) /*AModule::_n_classdefs*/;
+    /* Register variable[4]: Result */
+    variable[4] = CALL_abstract_collection___MapRead_____bra(variable[4])(variable[4],  variable[3] /*i*/) /*List::[]*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[4]) /*Visitor::visit*/;
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Int(UNTAG_Int( variable[3] /*i*/)-UNTAG_Int( TAG_Int(1)));
+    variable[3] = variable[4] /*i=*/;
+    continue_37: while(0);
   }
-  break_22: while(0);
+  break_37: while(0);
+  return_label35: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___APackagedecl___n_doc__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::APackagedecl::n_doc= (src/parser//parser_prod.nit:204,5--208:20)"};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___AModule___empty_init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 121, LOCATE_parser_prod___AModule___empty_init};
+  val_t variable[2];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  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*/) /*PDoc::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PDoc::parent=*/;
-  }
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AModule].i]) return;
+  /* Register variable[1]: Method return value and escape marker */
+  return_label38: while(false);
+  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AModule].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser_prod___APackagedecl___n_kwpackage__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::APackagedecl::n_kwpackage= (src/parser//parser_prod.nit:211,5--215:20)"};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  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*/) /*TKwpackage::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*TKwpackage::parent=*/;
-  }
+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, 123, LOCATE_parser_prod___AModule___init_amodule};
+  val_t variable[9];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Local variable */
+  variable[2] =  param1;
+  /* Register variable[3]: Local variable */
+  variable[3] =  param2;
+  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AModule].i]) return;
+  /* Register variable[4]: Method return value and escape marker */
+  CALL_parser_prod___AModule___empty_init(variable[0])(variable[0], init_table /*YYY*/) /*AModule::empty_init*/;
+  ATTR_parser_nodes___AModule____n_packagedecl(variable[0]) /*AModule::_n_packagedecl*/ =  variable[1] /*n_packagedecl*/;
+  /* Register variable[5]: Result */
+  variable[5] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_packagedecl*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_packagedecl*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n_packagedecl*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_packagedecl*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n_packagedecl*/)( variable[1] /*n_packagedecl*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[5])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n_packagedecl*/)( variable[1] /*n_packagedecl*/, variable[0]) /*PNode::parent=*/;
+  }
+  /* Register variable[5]: Result */
+  variable[5] = NEW_List_list___List___init() /*new List[PImport]*/;
+  ATTR_parser_nodes___AModule____n_imports(variable[0]) /*AModule::_n_imports*/ = variable[5];
+  /* Register variable[5]: For iterator */
+  variable[5] = CALL_abstract_collection___Collection___iterator( variable[2] /*n_imports*/)( variable[2] /*n_imports*/) /*Collection::iterator*/;
+  while (true) { /*for*/
+    /* Register variable[6]: For 'is_ok' result */
+    variable[6] = CALL_abstract_collection___Iterator___is_ok(variable[5])(variable[5]) /*Iterator::is_ok*/;
+    if (!UNTAG_Bool(variable[6])) break; /*for*/
+    variable[6] = CALL_abstract_collection___Iterator___item(variable[5])(variable[5]) /*Iterator::item*/ /* Ensure var: For item*/;
+    /* Register variable[7]: Local variable */
+    variable[7] = variable[6];
+    /* Register variable[8]: Result */
+    variable[8] = TAG_Bool(( variable[7] /*n*/==NIT_NULL) || VAL_ISA( variable[7] /*n*/, COLOR_PImport, ID_PImport)) /*cast PImport*/;
+    if (!UNTAG_Bool(variable[8])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AModule___init_amodule, LOCATE_parser_prod, 136); nit_exit(1);}
+    /* Register variable[8]: Result */
+    variable[8] = ATTR_parser_nodes___AModule____n_imports(variable[0]) /*AModule::_n_imports*/;
+    CALL_abstract_collection___SimpleCollection___add(variable[8])(variable[8],  variable[7] /*n*/) /*IndexedCollection::add*/;
+    CALL_parser_prod___PNode___parent__eq( variable[7] /*n*/)( variable[7] /*n*/, variable[0]) /*PNode::parent=*/;
+    continue_40: while(0);
+    CALL_abstract_collection___Iterator___next(variable[5])(variable[5]) /*Iterator::next*/;
+  }
+  break_40: while(0);
+  /* Register variable[5]: Result */
+  variable[5] = NEW_List_list___List___init() /*new List[PClassdef]*/;
+  ATTR_parser_nodes___AModule____n_classdefs(variable[0]) /*AModule::_n_classdefs*/ = variable[5];
+  /* Register variable[5]: For iterator */
+  variable[5] = CALL_abstract_collection___Collection___iterator( variable[3] /*n_classdefs*/)( variable[3] /*n_classdefs*/) /*Collection::iterator*/;
+  while (true) { /*for*/
+    /* Register variable[6]: For 'is_ok' result */
+    variable[6] = CALL_abstract_collection___Iterator___is_ok(variable[5])(variable[5]) /*Iterator::is_ok*/;
+    if (!UNTAG_Bool(variable[6])) break; /*for*/
+    variable[6] = CALL_abstract_collection___Iterator___item(variable[5])(variable[5]) /*Iterator::item*/ /* Ensure var: For item*/;
+    /* Register variable[7]: Local variable */
+    variable[7] = variable[6];
+    /* Register variable[8]: Result */
+    variable[8] = TAG_Bool(( variable[7] /*n*/==NIT_NULL) || VAL_ISA( variable[7] /*n*/, COLOR_PClassdef, ID_PClassdef)) /*cast PClassdef*/;
+    if (!UNTAG_Bool(variable[8])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AModule___init_amodule, LOCATE_parser_prod, 142); nit_exit(1);}
+    /* Register variable[8]: Result */
+    variable[8] = ATTR_parser_nodes___AModule____n_classdefs(variable[0]) /*AModule::_n_classdefs*/;
+    CALL_abstract_collection___SimpleCollection___add(variable[8])(variable[8],  variable[7] /*n*/) /*IndexedCollection::add*/;
+    CALL_parser_prod___PNode___parent__eq( variable[7] /*n*/)( variable[7] /*n*/, variable[0]) /*PNode::parent=*/;
+    continue_41: while(0);
+    CALL_abstract_collection___Iterator___next(variable[5])(variable[5]) /*Iterator::next*/;
+  }
+  break_41: while(0);
+  return_label39: while(false);
+  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AModule].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser_prod___APackagedecl___n_id__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::APackagedecl::n_id= (src/parser//parser_prod.nit:218,5--222:20)"};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___APackagedecl___n_doc__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 222, LOCATE_parser_prod___APackagedecl___n_doc__eq};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  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*/) /*TId::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*TId::parent=*/;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  ATTR_parser_nodes___APackagedecl____n_doc(variable[0]) /*APackagedecl::_n_doc*/ =  variable[1] /*n*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[0]) /*PNode::parent=*/;
   }
+  return_label42: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___APackagedecl___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, "parser_prod::APackagedecl::empty_init (src/parser//parser_prod.nit:226,5--27)"};
+void parser_prod___APackagedecl___n_kwpackage__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 229, LOCATE_parser_prod___APackagedecl___n_kwpackage__eq};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_APackagedecl].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_APackagedecl].i] = 1;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  ATTR_parser_nodes___APackagedecl____n_kwpackage(variable[0]) /*APackagedecl::_n_kwpackage*/ =  variable[1] /*n*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[0]) /*PNode::parent=*/;
+  }
+  return_label43: while(false);
   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, "parser_prod::APackagedecl::init_apackagedecl (src/parser//parser_prod.nit:228,5--244:20)"};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  val_t variable3;
-  trace.prev = tracehead; tracehead = &trace;
-  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*/) /*PDoc::==*/)))))));
-  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) /*PDoc::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*/) /*TKwpackage::==*/)))))));
-  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) /*TKwpackage::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*/) /*TId::==*/)))))));
-  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) /*TId::parent=*/;
+void parser_prod___APackagedecl___n_id__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 236, LOCATE_parser_prod___APackagedecl___n_id__eq};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  ATTR_parser_nodes___APackagedecl____n_id(variable[0]) /*APackagedecl::_n_id*/ =  variable[1] /*n*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[0]) /*PNode::parent=*/;
   }
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_APackagedecl].i] = 1;
+  return_label44: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___APackagedecl___replace_child(val_t  self, val_t  param0, val_t  param1) {
-  struct trace_t trace = {NULL, "parser_prod::APackagedecl::replace_child (src/parser//parser_prod.nit:248,5--279:18)"};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  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*/) /*PNode::==*/)))))));
-  if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert failed: src/parser//parser_prod.nit:250,9--32\n"); 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*/) /*PDoc::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*PNode::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_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 failed: src/parser//parser_prod.nit:254,3--27\n"); 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_label28;
-  }
-  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*/) /*TKwpackage::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*PNode::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_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 failed: src/parser//parser_prod.nit:264,3--33\n"); 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_label28;
-  }
-  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*/) /*TId::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*PNode::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_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 failed: src/parser//parser_prod.nit:274,3--26\n"); 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_label28;
+  struct trace_t trace = {NULL, NULL, 267, LOCATE_parser_prod___APackagedecl___replace_child};
+  val_t variable[5];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Local variable */
+  variable[2] =  param1;
+  /* Register variable[3]: Method return value and escape marker */
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___APackagedecl___replace_child, LOCATE_parser_prod, 269); nit_exit(1);}
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___APackagedecl____n_doc(variable[0]) /*APackagedecl::_n_doc*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*PNode::parent=*/;
+      /* Register variable[4]: Result */
+      variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
+      if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___APackagedecl___replace_child, LOCATE_parser_prod, 273); nit_exit(1);}
+      ATTR_parser_nodes___APackagedecl____n_doc(variable[0]) /*APackagedecl::_n_doc*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      ATTR_parser_nodes___APackagedecl____n_doc(variable[0]) /*APackagedecl::_n_doc*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label45;
+  }
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___APackagedecl____n_kwpackage(variable[0]) /*APackagedecl::_n_kwpackage*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*PNode::parent=*/;
+      /* Register variable[4]: Result */
+      variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_TKwpackage, ID_TKwpackage)) /*cast TKwpackage*/;
+      if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___APackagedecl___replace_child, LOCATE_parser_prod, 283); nit_exit(1);}
+      ATTR_parser_nodes___APackagedecl____n_kwpackage(variable[0]) /*APackagedecl::_n_kwpackage*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      ATTR_parser_nodes___APackagedecl____n_kwpackage(variable[0]) /*APackagedecl::_n_kwpackage*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label45;
+  }
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___APackagedecl____n_id(variable[0]) /*APackagedecl::_n_id*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*PNode::parent=*/;
+      /* Register variable[4]: Result */
+      variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_TId, ID_TId)) /*cast TId*/;
+      if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___APackagedecl___replace_child, LOCATE_parser_prod, 293); nit_exit(1);}
+      ATTR_parser_nodes___APackagedecl____n_id(variable[0]) /*APackagedecl::_n_id*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      ATTR_parser_nodes___APackagedecl____n_id(variable[0]) /*APackagedecl::_n_id*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label45;
   }
-  return_label28: while(false);
+  return_label45: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___APackagedecl___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::APackagedecl::visit_all (src/parser//parser_prod.nit:283,5--292:25)"};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  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*/) /*PDoc::==*/)))))));
-  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*/) /*TKwpackage::==*/)))))));
-  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*/) /*TId::==*/)))))));
-  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*/;
-  }
+  struct trace_t trace = {NULL, NULL, 302, LOCATE_parser_prod___APackagedecl___visit_all};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___APackagedecl____n_doc(variable[0]) /*APackagedecl::_n_doc*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___APackagedecl____n_doc(variable[0]) /*APackagedecl::_n_doc*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___APackagedecl____n_kwpackage(variable[0]) /*APackagedecl::_n_kwpackage*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___APackagedecl____n_kwpackage(variable[0]) /*APackagedecl::_n_kwpackage*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___APackagedecl____n_id(variable[0]) /*APackagedecl::_n_id*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___APackagedecl____n_id(variable[0]) /*APackagedecl::_n_id*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  return_label46: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___APackagedecl___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::APackagedecl::visit_all_reverse (src/parser//parser_prod.nit:296,5--305:25)"};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  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*/) /*PDoc::==*/)))))));
-  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*/) /*TKwpackage::==*/)))))));
-  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*/) /*TId::==*/)))))));
-  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*/;
-  }
+  struct trace_t trace = {NULL, NULL, 315, LOCATE_parser_prod___APackagedecl___visit_all_reverse};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___APackagedecl____n_doc(variable[0]) /*APackagedecl::_n_doc*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___APackagedecl____n_doc(variable[0]) /*APackagedecl::_n_doc*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___APackagedecl____n_kwpackage(variable[0]) /*APackagedecl::_n_kwpackage*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___APackagedecl____n_kwpackage(variable[0]) /*APackagedecl::_n_kwpackage*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___APackagedecl____n_id(variable[0]) /*APackagedecl::_n_id*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___APackagedecl____n_id(variable[0]) /*APackagedecl::_n_id*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  return_label47: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AImport___n_visibility__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AImport::n_visibility= (src/parser//parser_prod.nit:310,5--314:20)"};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___APackagedecl___empty_init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 244, LOCATE_parser_prod___APackagedecl___empty_init};
+  val_t variable[2];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  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*/) /*PVisibility::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PVisibility::parent=*/;
-  }
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_APackagedecl].i]) return;
+  /* Register variable[1]: Method return value and escape marker */
+  return_label48: while(false);
+  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_APackagedecl].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AImport___n_kwimport__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AImport::n_kwimport= (src/parser//parser_prod.nit:317,5--321:20)"};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  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*/) /*TKwimport::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*TKwimport::parent=*/;
-  }
+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, 246, LOCATE_parser_prod___APackagedecl___init_apackagedecl};
+  val_t variable[6];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Local variable */
+  variable[2] =  param1;
+  /* Register variable[3]: Local variable */
+  variable[3] =  param2;
+  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_APackagedecl].i]) return;
+  /* Register variable[4]: Method return value and escape marker */
+  CALL_parser_prod___APackagedecl___empty_init(variable[0])(variable[0], init_table /*YYY*/) /*APackagedecl::empty_init*/;
+  ATTR_parser_nodes___APackagedecl____n_doc(variable[0]) /*APackagedecl::_n_doc*/ =  variable[1] /*n_doc*/;
+  /* Register variable[5]: Result */
+  variable[5] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_doc*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_doc*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n_doc*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_doc*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n_doc*/)( variable[1] /*n_doc*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[5])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n_doc*/)( variable[1] /*n_doc*/, variable[0]) /*PNode::parent=*/;
+  }
+  ATTR_parser_nodes___APackagedecl____n_kwpackage(variable[0]) /*APackagedecl::_n_kwpackage*/ =  variable[2] /*n_kwpackage*/;
+  /* Register variable[5]: Result */
+  variable[5] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*n_kwpackage*/ ==  NIT_NULL /*null*/) || (( variable[2] /*n_kwpackage*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*n_kwpackage*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*n_kwpackage*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*n_kwpackage*/)( variable[2] /*n_kwpackage*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[5])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[2] /*n_kwpackage*/)( variable[2] /*n_kwpackage*/, variable[0]) /*PNode::parent=*/;
+  }
+  ATTR_parser_nodes___APackagedecl____n_id(variable[0]) /*APackagedecl::_n_id*/ =  variable[3] /*n_id*/;
+  /* Register variable[5]: Result */
+  variable[5] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[3] /*n_id*/ ==  NIT_NULL /*null*/) || (( variable[3] /*n_id*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[3] /*n_id*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[3] /*n_id*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[3] /*n_id*/)( variable[3] /*n_id*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[5])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[3] /*n_id*/)( variable[3] /*n_id*/, variable[0]) /*PNode::parent=*/;
+  }
+  return_label49: while(false);
+  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_APackagedecl].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AImport___n_id__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AImport::n_id= (src/parser//parser_prod.nit:324,5--328:20)"};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___AImport___n_visibility__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 329, LOCATE_parser_prod___AImport___n_visibility__eq};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  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*/) /*TId::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*TId::parent=*/;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  ATTR_parser_nodes___AImport____n_visibility(variable[0]) /*AImport::_n_visibility*/ =  variable[1] /*n*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[0]) /*PNode::parent=*/;
   }
+  return_label50: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AImport___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, "parser_prod::AImport::empty_init (src/parser//parser_prod.nit:332,5--27)"};
+void parser_prod___AImport___n_kwimport__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 336, LOCATE_parser_prod___AImport___n_kwimport__eq};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AImport].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AImport].i] = 1;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  ATTR_parser_nodes___AImport____n_kwimport(variable[0]) /*AImport::_n_kwimport*/ =  variable[1] /*n*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[0]) /*PNode::parent=*/;
+  }
+  return_label51: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AImport___init_aimport(val_t  self, val_t  param0, val_t  param1, val_t  param2, int* init_table) {
-  struct trace_t trace = {NULL, "parser_prod::AImport::init_aimport (src/parser//parser_prod.nit:334,5--350:20)"};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  val_t variable3;
+void parser_prod___AImport___n_id__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 343, LOCATE_parser_prod___AImport___n_id__eq};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  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*/) /*PVisibility::==*/)))))));
-  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) /*PVisibility::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*/) /*TKwimport::==*/)))))));
-  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) /*TKwimport::parent=*/;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  ATTR_parser_nodes___AImport____n_id(variable[0]) /*AImport::_n_id*/ =  variable[1] /*n*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[0]) /*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*/) /*TId::==*/)))))));
-  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) /*TId::parent=*/;
-  }
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AImport].i] = 1;
+  return_label52: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AImport___replace_child(val_t  self, val_t  param0, val_t  param1) {
-  struct trace_t trace = {NULL, "parser_prod::AImport::replace_child (src/parser//parser_prod.nit:354,5--385:18)"};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  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*/) /*PNode::==*/)))))));
-  if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert failed: src/parser//parser_prod.nit:356,9--32\n"); 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*/) /*PVisibility::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*PNode::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_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 failed: src/parser//parser_prod.nit:360,3--34\n"); nit_exit(1);}
-      ATTR_parser_nodes___AImport____n_visibility( self) /*AImport::_n_visibility*/ =  variable1 /*new_child*/;
+  struct trace_t trace = {NULL, NULL, 374, LOCATE_parser_prod___AImport___replace_child};
+  val_t variable[5];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Local variable */
+  variable[2] =  param1;
+  /* Register variable[3]: Method return value and escape marker */
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AImport___replace_child, LOCATE_parser_prod, 376); nit_exit(1);}
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___AImport____n_visibility(variable[0]) /*AImport::_n_visibility*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*PNode::parent=*/;
+      /* Register variable[4]: Result */
+      variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
+      if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AImport___replace_child, LOCATE_parser_prod, 380); nit_exit(1);}
+      ATTR_parser_nodes___AImport____n_visibility(variable[0]) /*AImport::_n_visibility*/ =  variable[2] /*new_child*/;
     } else { /*if*/
-      ATTR_parser_nodes___AImport____n_visibility( self) /*AImport::_n_visibility*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label36;
-  }
-  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*/) /*TKwimport::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*PNode::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_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 failed: src/parser//parser_prod.nit:370,3--32\n"); nit_exit(1);}
-      ATTR_parser_nodes___AImport____n_kwimport( self) /*AImport::_n_kwimport*/ =  variable1 /*new_child*/;
+      ATTR_parser_nodes___AImport____n_visibility(variable[0]) /*AImport::_n_visibility*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label53;
+  }
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___AImport____n_kwimport(variable[0]) /*AImport::_n_kwimport*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*PNode::parent=*/;
+      /* Register variable[4]: Result */
+      variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_TKwimport, ID_TKwimport)) /*cast TKwimport*/;
+      if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AImport___replace_child, LOCATE_parser_prod, 390); nit_exit(1);}
+      ATTR_parser_nodes___AImport____n_kwimport(variable[0]) /*AImport::_n_kwimport*/ =  variable[2] /*new_child*/;
     } else { /*if*/
-      ATTR_parser_nodes___AImport____n_kwimport( self) /*AImport::_n_kwimport*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label36;
-  }
-  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*/) /*TId::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*PNode::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_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 failed: src/parser//parser_prod.nit:380,3--26\n"); nit_exit(1);}
-      ATTR_parser_nodes___AImport____n_id( self) /*AImport::_n_id*/ =  variable1 /*new_child*/;
+      ATTR_parser_nodes___AImport____n_kwimport(variable[0]) /*AImport::_n_kwimport*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label53;
+  }
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___AImport____n_id(variable[0]) /*AImport::_n_id*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*PNode::parent=*/;
+      /* Register variable[4]: Result */
+      variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_TId, ID_TId)) /*cast TId*/;
+      if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AImport___replace_child, LOCATE_parser_prod, 400); nit_exit(1);}
+      ATTR_parser_nodes___AImport____n_id(variable[0]) /*AImport::_n_id*/ =  variable[2] /*new_child*/;
     } else { /*if*/
-      ATTR_parser_nodes___AImport____n_id( self) /*AImport::_n_id*/ =  NIT_NULL /*null*/;
+      ATTR_parser_nodes___AImport____n_id(variable[0]) /*AImport::_n_id*/ =  NIT_NULL /*null*/;
     }
-    goto return_label36;
+    goto return_label53;
   }
-  return_label36: while(false);
+  return_label53: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AImport___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AImport::visit_all (src/parser//parser_prod.nit:389,5--398:25)"};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  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*/) /*PVisibility::==*/)))))));
-  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*/) /*TKwimport::==*/)))))));
-  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*/) /*TId::==*/)))))));
-  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*/;
-  }
+  struct trace_t trace = {NULL, NULL, 409, LOCATE_parser_prod___AImport___visit_all};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AImport____n_visibility(variable[0]) /*AImport::_n_visibility*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AImport____n_visibility(variable[0]) /*AImport::_n_visibility*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AImport____n_kwimport(variable[0]) /*AImport::_n_kwimport*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AImport____n_kwimport(variable[0]) /*AImport::_n_kwimport*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AImport____n_id(variable[0]) /*AImport::_n_id*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AImport____n_id(variable[0]) /*AImport::_n_id*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  return_label54: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AImport___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AImport::visit_all_reverse (src/parser//parser_prod.nit:402,5--411:25)"};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  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*/) /*PVisibility::==*/)))))));
-  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*/) /*TKwimport::==*/)))))));
-  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*/) /*TId::==*/)))))));
-  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*/;
+  struct trace_t trace = {NULL, NULL, 422, LOCATE_parser_prod___AImport___visit_all_reverse};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AImport____n_visibility(variable[0]) /*AImport::_n_visibility*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AImport____n_visibility(variable[0]) /*AImport::_n_visibility*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AImport____n_kwimport(variable[0]) /*AImport::_n_kwimport*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AImport____n_kwimport(variable[0]) /*AImport::_n_kwimport*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AImport____n_id(variable[0]) /*AImport::_n_id*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AImport____n_id(variable[0]) /*AImport::_n_id*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
+  return_label55: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___ANoImport___n_visibility__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::ANoImport::n_visibility= (src/parser//parser_prod.nit:416,5--420:20)"};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___AImport___empty_init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 351, LOCATE_parser_prod___AImport___empty_init};
+  val_t variable[2];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  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*/) /*PVisibility::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PVisibility::parent=*/;
-  }
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AImport].i]) return;
+  /* Register variable[1]: Method return value and escape marker */
+  return_label56: while(false);
+  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AImport].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser_prod___ANoImport___n_kwimport__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::ANoImport::n_kwimport= (src/parser//parser_prod.nit:423,5--427:20)"};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  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*/) /*TKwimport::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*TKwimport::parent=*/;
-  }
+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, 353, LOCATE_parser_prod___AImport___init_aimport};
+  val_t variable[6];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Local variable */
+  variable[2] =  param1;
+  /* Register variable[3]: Local variable */
+  variable[3] =  param2;
+  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AImport].i]) return;
+  /* Register variable[4]: Method return value and escape marker */
+  CALL_parser_prod___AImport___empty_init(variable[0])(variable[0], init_table /*YYY*/) /*AImport::empty_init*/;
+  ATTR_parser_nodes___AImport____n_visibility(variable[0]) /*AImport::_n_visibility*/ =  variable[1] /*n_visibility*/;
+  /* Register variable[5]: Result */
+  variable[5] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_visibility*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_visibility*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n_visibility*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_visibility*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n_visibility*/)( variable[1] /*n_visibility*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[5])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n_visibility*/)( variable[1] /*n_visibility*/, variable[0]) /*PNode::parent=*/;
+  }
+  ATTR_parser_nodes___AImport____n_kwimport(variable[0]) /*AImport::_n_kwimport*/ =  variable[2] /*n_kwimport*/;
+  /* Register variable[5]: Result */
+  variable[5] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*n_kwimport*/ ==  NIT_NULL /*null*/) || (( variable[2] /*n_kwimport*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*n_kwimport*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*n_kwimport*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*n_kwimport*/)( variable[2] /*n_kwimport*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[5])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[2] /*n_kwimport*/)( variable[2] /*n_kwimport*/, variable[0]) /*PNode::parent=*/;
+  }
+  ATTR_parser_nodes___AImport____n_id(variable[0]) /*AImport::_n_id*/ =  variable[3] /*n_id*/;
+  /* Register variable[5]: Result */
+  variable[5] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[3] /*n_id*/ ==  NIT_NULL /*null*/) || (( variable[3] /*n_id*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[3] /*n_id*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[3] /*n_id*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[3] /*n_id*/)( variable[3] /*n_id*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[5])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[3] /*n_id*/)( variable[3] /*n_id*/, variable[0]) /*PNode::parent=*/;
+  }
+  return_label57: while(false);
+  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AImport].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser_prod___ANoImport___n_kwend__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::ANoImport::n_kwend= (src/parser//parser_prod.nit:430,5--434:20)"};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___ANoImport___n_visibility__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 436, LOCATE_parser_prod___ANoImport___n_visibility__eq};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  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*/) /*TKwend::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*TKwend::parent=*/;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  ATTR_parser_nodes___ANoImport____n_visibility(variable[0]) /*ANoImport::_n_visibility*/ =  variable[1] /*n*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[0]) /*PNode::parent=*/;
   }
+  return_label58: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___ANoImport___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, "parser_prod::ANoImport::empty_init (src/parser//parser_prod.nit:438,5--27)"};
+void parser_prod___ANoImport___n_kwimport__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 443, LOCATE_parser_prod___ANoImport___n_kwimport__eq};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ANoImport].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ANoImport].i] = 1;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  ATTR_parser_nodes___ANoImport____n_kwimport(variable[0]) /*ANoImport::_n_kwimport*/ =  variable[1] /*n*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[0]) /*PNode::parent=*/;
+  }
+  return_label59: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___ANoImport___init_anoimport(val_t  self, val_t  param0, val_t  param1, val_t  param2, int* init_table) {
-  struct trace_t trace = {NULL, "parser_prod::ANoImport::init_anoimport (src/parser//parser_prod.nit:440,5--456:23)"};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  val_t variable3;
+void parser_prod___ANoImport___n_kwend__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 450, LOCATE_parser_prod___ANoImport___n_kwend__eq};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  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*/) /*PVisibility::==*/)))))));
-  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) /*PVisibility::parent=*/;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  ATTR_parser_nodes___ANoImport____n_kwend(variable[0]) /*ANoImport::_n_kwend*/ =  variable[1] /*n*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[0]) /*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*/) /*TKwimport::==*/)))))));
-  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) /*TKwimport::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*/) /*TKwend::==*/)))))));
-  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) /*TKwend::parent=*/;
-  }
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ANoImport].i] = 1;
+  return_label60: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___ANoImport___replace_child(val_t  self, val_t  param0, val_t  param1) {
-  struct trace_t trace = {NULL, "parser_prod::ANoImport::replace_child (src/parser//parser_prod.nit:460,5--491:18)"};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  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*/) /*PNode::==*/)))))));
-  if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert failed: src/parser//parser_prod.nit:462,9--32\n"); 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*/) /*PVisibility::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*PNode::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_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 failed: src/parser//parser_prod.nit:466,3--34\n"); 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_label44;
-  }
-  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*/) /*TKwimport::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*PNode::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_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 failed: src/parser//parser_prod.nit:476,3--32\n"); 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_label44;
-  }
-  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*/) /*TKwend::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*PNode::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_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 failed: src/parser//parser_prod.nit:486,3--29\n"); 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_label44;
+  struct trace_t trace = {NULL, NULL, 481, LOCATE_parser_prod___ANoImport___replace_child};
+  val_t variable[5];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Local variable */
+  variable[2] =  param1;
+  /* Register variable[3]: Method return value and escape marker */
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ANoImport___replace_child, LOCATE_parser_prod, 483); nit_exit(1);}
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___ANoImport____n_visibility(variable[0]) /*ANoImport::_n_visibility*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*PNode::parent=*/;
+      /* Register variable[4]: Result */
+      variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
+      if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ANoImport___replace_child, LOCATE_parser_prod, 487); nit_exit(1);}
+      ATTR_parser_nodes___ANoImport____n_visibility(variable[0]) /*ANoImport::_n_visibility*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      ATTR_parser_nodes___ANoImport____n_visibility(variable[0]) /*ANoImport::_n_visibility*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label61;
   }
-  return_label44: while(false);
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___ANoImport____n_kwimport(variable[0]) /*ANoImport::_n_kwimport*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*PNode::parent=*/;
+      /* Register variable[4]: Result */
+      variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_TKwimport, ID_TKwimport)) /*cast TKwimport*/;
+      if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ANoImport___replace_child, LOCATE_parser_prod, 497); nit_exit(1);}
+      ATTR_parser_nodes___ANoImport____n_kwimport(variable[0]) /*ANoImport::_n_kwimport*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      ATTR_parser_nodes___ANoImport____n_kwimport(variable[0]) /*ANoImport::_n_kwimport*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label61;
+  }
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___ANoImport____n_kwend(variable[0]) /*ANoImport::_n_kwend*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*PNode::parent=*/;
+      /* Register variable[4]: Result */
+      variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_TKwend, ID_TKwend)) /*cast TKwend*/;
+      if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ANoImport___replace_child, LOCATE_parser_prod, 507); nit_exit(1);}
+      ATTR_parser_nodes___ANoImport____n_kwend(variable[0]) /*ANoImport::_n_kwend*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      ATTR_parser_nodes___ANoImport____n_kwend(variable[0]) /*ANoImport::_n_kwend*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label61;
+  }
+  return_label61: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___ANoImport___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::ANoImport::visit_all (src/parser//parser_prod.nit:495,5--504:28)"};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  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*/) /*PVisibility::==*/)))))));
-  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*/) /*TKwimport::==*/)))))));
-  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*/) /*TKwend::==*/)))))));
-  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*/;
-  }
+  struct trace_t trace = {NULL, NULL, 516, LOCATE_parser_prod___ANoImport___visit_all};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___ANoImport____n_visibility(variable[0]) /*ANoImport::_n_visibility*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___ANoImport____n_visibility(variable[0]) /*ANoImport::_n_visibility*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___ANoImport____n_kwimport(variable[0]) /*ANoImport::_n_kwimport*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___ANoImport____n_kwimport(variable[0]) /*ANoImport::_n_kwimport*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___ANoImport____n_kwend(variable[0]) /*ANoImport::_n_kwend*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___ANoImport____n_kwend(variable[0]) /*ANoImport::_n_kwend*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  return_label62: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___ANoImport___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::ANoImport::visit_all_reverse (src/parser//parser_prod.nit:508,5--517:28)"};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  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*/) /*PVisibility::==*/)))))));
-  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*/) /*TKwimport::==*/)))))));
-  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*/) /*TKwend::==*/)))))));
-  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*/;
-  }
+  struct trace_t trace = {NULL, NULL, 529, LOCATE_parser_prod___ANoImport___visit_all_reverse};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___ANoImport____n_visibility(variable[0]) /*ANoImport::_n_visibility*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___ANoImport____n_visibility(variable[0]) /*ANoImport::_n_visibility*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___ANoImport____n_kwimport(variable[0]) /*ANoImport::_n_kwimport*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___ANoImport____n_kwimport(variable[0]) /*ANoImport::_n_kwimport*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___ANoImport____n_kwend(variable[0]) /*ANoImport::_n_kwend*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___ANoImport____n_kwend(variable[0]) /*ANoImport::_n_kwend*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  return_label63: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___APublicVisibility___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, "parser_prod::APublicVisibility::empty_init (src/parser//parser_prod.nit:523,5--27)"};
+void parser_prod___ANoImport___empty_init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 458, LOCATE_parser_prod___ANoImport___empty_init};
+  val_t variable[2];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_APublicVisibility].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_APublicVisibility].i] = 1;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ANoImport].i]) return;
+  /* Register variable[1]: Method return value and escape marker */
+  return_label64: while(false);
+  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ANoImport].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser_prod___APublicVisibility___init_apublicvisibility(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, "parser_prod::APublicVisibility::init_apublicvisibility (src/parser//parser_prod.nit:525,5--31)"};
-  trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_APublicVisibility].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_APublicVisibility].i] = 1;
+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, 460, LOCATE_parser_prod___ANoImport___init_anoimport};
+  val_t variable[6];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Local variable */
+  variable[2] =  param1;
+  /* Register variable[3]: Local variable */
+  variable[3] =  param2;
+  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ANoImport].i]) return;
+  /* Register variable[4]: Method return value and escape marker */
+  CALL_parser_prod___ANoImport___empty_init(variable[0])(variable[0], init_table /*YYY*/) /*ANoImport::empty_init*/;
+  ATTR_parser_nodes___ANoImport____n_visibility(variable[0]) /*ANoImport::_n_visibility*/ =  variable[1] /*n_visibility*/;
+  /* Register variable[5]: Result */
+  variable[5] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_visibility*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_visibility*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n_visibility*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_visibility*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n_visibility*/)( variable[1] /*n_visibility*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[5])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n_visibility*/)( variable[1] /*n_visibility*/, variable[0]) /*PNode::parent=*/;
+  }
+  ATTR_parser_nodes___ANoImport____n_kwimport(variable[0]) /*ANoImport::_n_kwimport*/ =  variable[2] /*n_kwimport*/;
+  /* Register variable[5]: Result */
+  variable[5] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*n_kwimport*/ ==  NIT_NULL /*null*/) || (( variable[2] /*n_kwimport*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*n_kwimport*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*n_kwimport*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*n_kwimport*/)( variable[2] /*n_kwimport*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[5])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[2] /*n_kwimport*/)( variable[2] /*n_kwimport*/, variable[0]) /*PNode::parent=*/;
+  }
+  ATTR_parser_nodes___ANoImport____n_kwend(variable[0]) /*ANoImport::_n_kwend*/ =  variable[3] /*n_kwend*/;
+  /* Register variable[5]: Result */
+  variable[5] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[3] /*n_kwend*/ ==  NIT_NULL /*null*/) || (( variable[3] /*n_kwend*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[3] /*n_kwend*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[3] /*n_kwend*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[3] /*n_kwend*/)( variable[3] /*n_kwend*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[5])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[3] /*n_kwend*/)( variable[3] /*n_kwend*/, variable[0]) /*PNode::parent=*/;
+  }
+  return_label65: while(false);
+  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ANoImport].i] = 1;
   tracehead = trace.prev;
   return;
 }
 void parser_prod___APublicVisibility___replace_child(val_t  self, val_t  param0, val_t  param1) {
-  struct trace_t trace = {NULL, "parser_prod::APublicVisibility::replace_child (src/parser//parser_prod.nit:529,5--531:32)"};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
+  struct trace_t trace = {NULL, NULL, 551, LOCATE_parser_prod___APublicVisibility___replace_child};
+  val_t variable[5];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  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*/) /*PNode::==*/)))))));
-  if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert failed: src/parser//parser_prod.nit:531,9--32\n"); nit_exit(1);}
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Local variable */
+  variable[2] =  param1;
+  /* Register variable[3]: Method return value and escape marker */
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___APublicVisibility___replace_child, LOCATE_parser_prod, 553); nit_exit(1);}
+  return_label66: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___APublicVisibility___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::APublicVisibility::visit_all (src/parser//parser_prod.nit:534,5--35)"};
-  val_t variable0;
-  trace.prev = tracehead; tracehead = &trace;
-  variable0 =  param0;
+  struct trace_t trace = {NULL, NULL, 556, LOCATE_parser_prod___APublicVisibility___visit_all};
+  val_t variable[3];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  return_label67: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___APublicVisibility___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::APublicVisibility::visit_all_reverse (src/parser//parser_prod.nit:538,5--43)"};
-  val_t variable0;
+  struct trace_t trace = {NULL, NULL, 560, LOCATE_parser_prod___APublicVisibility___visit_all_reverse};
+  val_t variable[3];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  variable0 =  param0;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  return_label68: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___APrivateVisibility___n_kwprivate__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::APrivateVisibility::n_kwprivate= (src/parser//parser_prod.nit:543,5--547:20)"};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___APublicVisibility___empty_init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 544, LOCATE_parser_prod___APublicVisibility___empty_init};
+  val_t variable[2];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  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*/) /*TKwprivate::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*TKwprivate::parent=*/;
-  }
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_APublicVisibility].i]) return;
+  /* Register variable[1]: Method return value and escape marker */
+  return_label69: while(false);
+  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_APublicVisibility].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser_prod___APrivateVisibility___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, "parser_prod::APrivateVisibility::empty_init (src/parser//parser_prod.nit:551,5--27)"};
+void parser_prod___APublicVisibility___init_apublicvisibility(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 546, LOCATE_parser_prod___APublicVisibility___init_apublicvisibility};
+  val_t variable[2];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_APrivateVisibility].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_APrivateVisibility].i] = 1;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_APublicVisibility].i]) return;
+  /* Register variable[1]: Method return value and escape marker */
+  CALL_parser_prod___APublicVisibility___empty_init(variable[0])(variable[0], init_table /*YYY*/) /*APublicVisibility::empty_init*/;
+  return_label70: while(false);
+  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_APublicVisibility].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser_prod___APrivateVisibility___init_aprivatevisibility(val_t  self, val_t  param0, int* init_table) {
-  struct trace_t trace = {NULL, "parser_prod::APrivateVisibility::init_aprivatevisibility (src/parser//parser_prod.nit:553,5--559:27)"};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___APrivateVisibility___n_kwprivate__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 565, LOCATE_parser_prod___APrivateVisibility___n_kwprivate__eq};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  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*/) /*TKwprivate::==*/)))))));
-  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) /*TKwprivate::parent=*/;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  ATTR_parser_nodes___APrivateVisibility____n_kwprivate(variable[0]) /*APrivateVisibility::_n_kwprivate*/ =  variable[1] /*n*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[0]) /*PNode::parent=*/;
   }
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_APrivateVisibility].i] = 1;
+  return_label71: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___APrivateVisibility___replace_child(val_t  self, val_t  param0, val_t  param1) {
-  struct trace_t trace = {NULL, "parser_prod::APrivateVisibility::replace_child (src/parser//parser_prod.nit:563,5--574:18)"};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  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*/) /*PNode::==*/)))))));
-  if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert failed: src/parser//parser_prod.nit:565,9--32\n"); 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*/) /*TKwprivate::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*PNode::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_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 failed: src/parser//parser_prod.nit:569,3--33\n"); 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_label55;
+  struct trace_t trace = {NULL, NULL, 586, LOCATE_parser_prod___APrivateVisibility___replace_child};
+  val_t variable[5];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Local variable */
+  variable[2] =  param1;
+  /* Register variable[3]: Method return value and escape marker */
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___APrivateVisibility___replace_child, LOCATE_parser_prod, 588); nit_exit(1);}
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___APrivateVisibility____n_kwprivate(variable[0]) /*APrivateVisibility::_n_kwprivate*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*PNode::parent=*/;
+      /* Register variable[4]: Result */
+      variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_TKwprivate, ID_TKwprivate)) /*cast TKwprivate*/;
+      if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___APrivateVisibility___replace_child, LOCATE_parser_prod, 592); nit_exit(1);}
+      ATTR_parser_nodes___APrivateVisibility____n_kwprivate(variable[0]) /*APrivateVisibility::_n_kwprivate*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      ATTR_parser_nodes___APrivateVisibility____n_kwprivate(variable[0]) /*APrivateVisibility::_n_kwprivate*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label72;
   }
-  return_label55: while(false);
+  return_label72: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___APrivateVisibility___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::APrivateVisibility::visit_all (src/parser//parser_prod.nit:578,5--581:32)"};
-  val_t variable0;
-  val_t variable1;
+  struct trace_t trace = {NULL, NULL, 601, LOCATE_parser_prod___APrivateVisibility___visit_all};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  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*/) /*TKwprivate::==*/)))))));
-  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*/;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___APrivateVisibility____n_kwprivate(variable[0]) /*APrivateVisibility::_n_kwprivate*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___APrivateVisibility____n_kwprivate(variable[0]) /*APrivateVisibility::_n_kwprivate*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
+  return_label73: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___APrivateVisibility___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::APrivateVisibility::visit_all_reverse (src/parser//parser_prod.nit:585,5--588:32)"};
-  val_t variable0;
-  val_t variable1;
+  struct trace_t trace = {NULL, NULL, 608, LOCATE_parser_prod___APrivateVisibility___visit_all_reverse};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  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*/) /*TKwprivate::==*/)))))));
-  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*/;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___APrivateVisibility____n_kwprivate(variable[0]) /*APrivateVisibility::_n_kwprivate*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___APrivateVisibility____n_kwprivate(variable[0]) /*APrivateVisibility::_n_kwprivate*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
+  return_label74: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AProtectedVisibility___n_kwprotected__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AProtectedVisibility::n_kwprotected= (src/parser//parser_prod.nit:593,5--597:20)"};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___APrivateVisibility___empty_init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 573, LOCATE_parser_prod___APrivateVisibility___empty_init};
+  val_t variable[2];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  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*/) /*TKwprotected::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*TKwprotected::parent=*/;
-  }
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_APrivateVisibility].i]) return;
+  /* Register variable[1]: Method return value and escape marker */
+  return_label75: while(false);
+  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_APrivateVisibility].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AProtectedVisibility___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, "parser_prod::AProtectedVisibility::empty_init (src/parser//parser_prod.nit:601,5--27)"};
+void parser_prod___APrivateVisibility___init_aprivatevisibility(val_t  self, val_t  param0, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 575, LOCATE_parser_prod___APrivateVisibility___init_aprivatevisibility};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AProtectedVisibility].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AProtectedVisibility].i] = 1;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_APrivateVisibility].i]) return;
+  /* Register variable[2]: Method return value and escape marker */
+  CALL_parser_prod___APrivateVisibility___empty_init(variable[0])(variable[0], init_table /*YYY*/) /*APrivateVisibility::empty_init*/;
+  ATTR_parser_nodes___APrivateVisibility____n_kwprivate(variable[0]) /*APrivateVisibility::_n_kwprivate*/ =  variable[1] /*n_kwprivate*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_kwprivate*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_kwprivate*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n_kwprivate*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_kwprivate*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n_kwprivate*/)( variable[1] /*n_kwprivate*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n_kwprivate*/)( variable[1] /*n_kwprivate*/, variable[0]) /*PNode::parent=*/;
+  }
+  return_label76: while(false);
+  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_APrivateVisibility].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AProtectedVisibility___init_aprotectedvisibility(val_t  self, val_t  param0, int* init_table) {
-  struct trace_t trace = {NULL, "parser_prod::AProtectedVisibility::init_aprotectedvisibility (src/parser//parser_prod.nit:603,5--609:29)"};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___AProtectedVisibility___n_kwprotected__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 616, LOCATE_parser_prod___AProtectedVisibility___n_kwprotected__eq};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  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*/) /*TKwprotected::==*/)))))));
-  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) /*TKwprotected::parent=*/;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  ATTR_parser_nodes___AProtectedVisibility____n_kwprotected(variable[0]) /*AProtectedVisibility::_n_kwprotected*/ =  variable[1] /*n*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[0]) /*PNode::parent=*/;
   }
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AProtectedVisibility].i] = 1;
+  return_label77: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AProtectedVisibility___replace_child(val_t  self, val_t  param0, val_t  param1) {
-  struct trace_t trace = {NULL, "parser_prod::AProtectedVisibility::replace_child (src/parser//parser_prod.nit:613,5--624:18)"};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  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*/) /*PNode::==*/)))))));
-  if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert failed: src/parser//parser_prod.nit:615,9--32\n"); 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*/) /*TKwprotected::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*PNode::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_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 failed: src/parser//parser_prod.nit:619,3--35\n"); 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*/;
+  struct trace_t trace = {NULL, NULL, 637, LOCATE_parser_prod___AProtectedVisibility___replace_child};
+  val_t variable[5];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Local variable */
+  variable[2] =  param1;
+  /* Register variable[3]: Method return value and escape marker */
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AProtectedVisibility___replace_child, LOCATE_parser_prod, 639); nit_exit(1);}
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___AProtectedVisibility____n_kwprotected(variable[0]) /*AProtectedVisibility::_n_kwprotected*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*PNode::parent=*/;
+      /* Register variable[4]: Result */
+      variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_TKwprotected, ID_TKwprotected)) /*cast TKwprotected*/;
+      if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AProtectedVisibility___replace_child, LOCATE_parser_prod, 643); nit_exit(1);}
+      ATTR_parser_nodes___AProtectedVisibility____n_kwprotected(variable[0]) /*AProtectedVisibility::_n_kwprotected*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      ATTR_parser_nodes___AProtectedVisibility____n_kwprotected(variable[0]) /*AProtectedVisibility::_n_kwprotected*/ =  NIT_NULL /*null*/;
     }
-    goto return_label61;
+    goto return_label78;
   }
-  return_label61: while(false);
+  return_label78: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AProtectedVisibility___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AProtectedVisibility::visit_all (src/parser//parser_prod.nit:628,5--631:34)"};
-  val_t variable0;
-  val_t variable1;
+  struct trace_t trace = {NULL, NULL, 652, LOCATE_parser_prod___AProtectedVisibility___visit_all};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  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*/) /*TKwprotected::==*/)))))));
-  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*/;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AProtectedVisibility____n_kwprotected(variable[0]) /*AProtectedVisibility::_n_kwprotected*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AProtectedVisibility____n_kwprotected(variable[0]) /*AProtectedVisibility::_n_kwprotected*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
+  return_label79: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AProtectedVisibility___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AProtectedVisibility::visit_all_reverse (src/parser//parser_prod.nit:635,5--638:34)"};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  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*/) /*TKwprotected::==*/)))))));
-  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*/;
+  struct trace_t trace = {NULL, NULL, 659, LOCATE_parser_prod___AProtectedVisibility___visit_all_reverse};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AProtectedVisibility____n_kwprotected(variable[0]) /*AProtectedVisibility::_n_kwprotected*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AProtectedVisibility____n_kwprotected(variable[0]) /*AProtectedVisibility::_n_kwprotected*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
+  return_label80: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AIntrudeVisibility___n_kwintrude__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AIntrudeVisibility::n_kwintrude= (src/parser//parser_prod.nit:643,5--647:20)"};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___AProtectedVisibility___empty_init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 624, LOCATE_parser_prod___AProtectedVisibility___empty_init};
+  val_t variable[2];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  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*/) /*TKwintrude::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*TKwintrude::parent=*/;
-  }
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AProtectedVisibility].i]) return;
+  /* Register variable[1]: Method return value and escape marker */
+  return_label81: while(false);
+  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AProtectedVisibility].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AIntrudeVisibility___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, "parser_prod::AIntrudeVisibility::empty_init (src/parser//parser_prod.nit:651,5--27)"};
+void parser_prod___AProtectedVisibility___init_aprotectedvisibility(val_t  self, val_t  param0, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 626, LOCATE_parser_prod___AProtectedVisibility___init_aprotectedvisibility};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AIntrudeVisibility].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AIntrudeVisibility].i] = 1;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AProtectedVisibility].i]) return;
+  /* Register variable[2]: Method return value and escape marker */
+  CALL_parser_prod___AProtectedVisibility___empty_init(variable[0])(variable[0], init_table /*YYY*/) /*AProtectedVisibility::empty_init*/;
+  ATTR_parser_nodes___AProtectedVisibility____n_kwprotected(variable[0]) /*AProtectedVisibility::_n_kwprotected*/ =  variable[1] /*n_kwprotected*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_kwprotected*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_kwprotected*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n_kwprotected*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_kwprotected*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n_kwprotected*/)( variable[1] /*n_kwprotected*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n_kwprotected*/)( variable[1] /*n_kwprotected*/, variable[0]) /*PNode::parent=*/;
+  }
+  return_label82: while(false);
+  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AProtectedVisibility].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AIntrudeVisibility___init_aintrudevisibility(val_t  self, val_t  param0, int* init_table) {
-  struct trace_t trace = {NULL, "parser_prod::AIntrudeVisibility::init_aintrudevisibility (src/parser//parser_prod.nit:653,5--659:27)"};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___AIntrudeVisibility___n_kwintrude__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 667, LOCATE_parser_prod___AIntrudeVisibility___n_kwintrude__eq};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  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*/) /*TKwintrude::==*/)))))));
-  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) /*TKwintrude::parent=*/;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  ATTR_parser_nodes___AIntrudeVisibility____n_kwintrude(variable[0]) /*AIntrudeVisibility::_n_kwintrude*/ =  variable[1] /*n*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[0]) /*PNode::parent=*/;
   }
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AIntrudeVisibility].i] = 1;
+  return_label83: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AIntrudeVisibility___replace_child(val_t  self, val_t  param0, val_t  param1) {
-  struct trace_t trace = {NULL, "parser_prod::AIntrudeVisibility::replace_child (src/parser//parser_prod.nit:663,5--674:18)"};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  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*/) /*PNode::==*/)))))));
-  if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert failed: src/parser//parser_prod.nit:665,9--32\n"); 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*/) /*TKwintrude::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*PNode::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_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 failed: src/parser//parser_prod.nit:669,3--33\n"); 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_label67;
+  struct trace_t trace = {NULL, NULL, 688, LOCATE_parser_prod___AIntrudeVisibility___replace_child};
+  val_t variable[5];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Local variable */
+  variable[2] =  param1;
+  /* Register variable[3]: Method return value and escape marker */
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AIntrudeVisibility___replace_child, LOCATE_parser_prod, 690); nit_exit(1);}
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___AIntrudeVisibility____n_kwintrude(variable[0]) /*AIntrudeVisibility::_n_kwintrude*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*PNode::parent=*/;
+      /* Register variable[4]: Result */
+      variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_TKwintrude, ID_TKwintrude)) /*cast TKwintrude*/;
+      if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AIntrudeVisibility___replace_child, LOCATE_parser_prod, 694); nit_exit(1);}
+      ATTR_parser_nodes___AIntrudeVisibility____n_kwintrude(variable[0]) /*AIntrudeVisibility::_n_kwintrude*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      ATTR_parser_nodes___AIntrudeVisibility____n_kwintrude(variable[0]) /*AIntrudeVisibility::_n_kwintrude*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label84;
   }
-  return_label67: while(false);
+  return_label84: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AIntrudeVisibility___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AIntrudeVisibility::visit_all (src/parser//parser_prod.nit:678,5--681:32)"};
-  val_t variable0;
-  val_t variable1;
+  struct trace_t trace = {NULL, NULL, 703, LOCATE_parser_prod___AIntrudeVisibility___visit_all};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  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*/) /*TKwintrude::==*/)))))));
-  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*/;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AIntrudeVisibility____n_kwintrude(variable[0]) /*AIntrudeVisibility::_n_kwintrude*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AIntrudeVisibility____n_kwintrude(variable[0]) /*AIntrudeVisibility::_n_kwintrude*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
+  return_label85: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AIntrudeVisibility___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AIntrudeVisibility::visit_all_reverse (src/parser//parser_prod.nit:685,5--688:32)"};
-  val_t variable0;
-  val_t variable1;
+  struct trace_t trace = {NULL, NULL, 710, LOCATE_parser_prod___AIntrudeVisibility___visit_all_reverse};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  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*/) /*TKwintrude::==*/)))))));
-  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*/;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AIntrudeVisibility____n_kwintrude(variable[0]) /*AIntrudeVisibility::_n_kwintrude*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AIntrudeVisibility____n_kwintrude(variable[0]) /*AIntrudeVisibility::_n_kwintrude*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
+  return_label86: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AClassdef___n_doc__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AClassdef::n_doc= (src/parser//parser_prod.nit:693,5--697:20)"};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___AIntrudeVisibility___empty_init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 675, LOCATE_parser_prod___AIntrudeVisibility___empty_init};
+  val_t variable[2];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  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*/) /*PDoc::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PDoc::parent=*/;
-  }
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AIntrudeVisibility].i]) return;
+  /* Register variable[1]: Method return value and escape marker */
+  return_label87: while(false);
+  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AIntrudeVisibility].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AClassdef___n_kwredef__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AClassdef::n_kwredef= (src/parser//parser_prod.nit:700,5--704:20)"};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___AIntrudeVisibility___init_aintrudevisibility(val_t  self, val_t  param0, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 677, LOCATE_parser_prod___AIntrudeVisibility___init_aintrudevisibility};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  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*/) /*TKwredef::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*TKwredef::parent=*/;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AIntrudeVisibility].i]) return;
+  /* Register variable[2]: Method return value and escape marker */
+  CALL_parser_prod___AIntrudeVisibility___empty_init(variable[0])(variable[0], init_table /*YYY*/) /*AIntrudeVisibility::empty_init*/;
+  ATTR_parser_nodes___AIntrudeVisibility____n_kwintrude(variable[0]) /*AIntrudeVisibility::_n_kwintrude*/ =  variable[1] /*n_kwintrude*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_kwintrude*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_kwintrude*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n_kwintrude*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_kwintrude*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n_kwintrude*/)( variable[1] /*n_kwintrude*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n_kwintrude*/)( variable[1] /*n_kwintrude*/, variable[0]) /*PNode::parent=*/;
   }
+  return_label88: while(false);
+  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AIntrudeVisibility].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AClassdef___n_visibility__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AClassdef::n_visibility= (src/parser//parser_prod.nit:707,5--711:20)"};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___AClassdef___n_doc__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 718, LOCATE_parser_prod___AClassdef___n_doc__eq};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  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*/) /*PVisibility::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PVisibility::parent=*/;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  ATTR_parser_nodes___AClassdef____n_doc(variable[0]) /*AClassdef::_n_doc*/ =  variable[1] /*n*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[0]) /*PNode::parent=*/;
   }
+  return_label89: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AClassdef___n_classkind__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AClassdef::n_classkind= (src/parser//parser_prod.nit:714,5--718:20)"};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___AClassdef___n_kwredef__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 725, LOCATE_parser_prod___AClassdef___n_kwredef__eq};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  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*/) /*PClasskind::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PClasskind::parent=*/;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  ATTR_parser_nodes___AClassdef____n_kwredef(variable[0]) /*AClassdef::_n_kwredef*/ =  variable[1] /*n*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[0]) /*PNode::parent=*/;
   }
+  return_label90: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AClassdef___n_id__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AClassdef::n_id= (src/parser//parser_prod.nit:721,5--725:20)"};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___AClassdef___n_visibility__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 732, LOCATE_parser_prod___AClassdef___n_visibility__eq};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  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*/) /*TClassid::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*TClassid::parent=*/;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  ATTR_parser_nodes___AClassdef____n_visibility(variable[0]) /*AClassdef::_n_visibility*/ =  variable[1] /*n*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[0]) /*PNode::parent=*/;
   }
+  return_label91: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AClassdef___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, "parser_prod::AClassdef::empty_init (src/parser//parser_prod.nit:729,5--27)"};
+void parser_prod___AClassdef___n_classkind__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 739, LOCATE_parser_prod___AClassdef___n_classkind__eq};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AClassdef].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AClassdef].i] = 1;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  ATTR_parser_nodes___AClassdef____n_classkind(variable[0]) /*AClassdef::_n_classkind*/ =  variable[1] /*n*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[0]) /*PNode::parent=*/;
+  }
+  return_label92: while(false);
   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, "parser_prod::AClassdef::init_aclassdef (src/parser//parser_prod.nit:731,5--778:17)"};
-  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;
-  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*/) /*PDoc::==*/)))))));
-  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) /*PDoc::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*/) /*TKwredef::==*/)))))));
-  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) /*TKwredef::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*/) /*PVisibility::==*/)))))));
-  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) /*PVisibility::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*/) /*PClasskind::==*/)))))));
-  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) /*PClasskind::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*/) /*TClassid::==*/)))))));
-  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) /*TClassid::parent=*/;
-  }
-  variable8 = NEW_list___List___init(); /*new List[PFormaldef]*/
-  ATTR_parser_nodes___AClassdef____n_formaldefs( self) /*AClassdef::_n_formaldefs*/ = variable8;
-  variable8 = ((array___AbstractArray___iterator_t)CALL( variable5 /*n_formaldefs*/,COLOR_abstract_collection___Collection___iterator))( variable5 /*n_formaldefs*/) /*Array::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 failed: src/parser//parser_prod.nit:764,3--25\n"); 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*/) /*List::add*/;
-    ((parser_prod___PNode___parent__eq_t)CALL( variable9 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable9 /*n*/,  self) /*PFormaldef::parent=*/;
-    continue_77: while(0);
-    ((array___ArrayIterator___next_t)CALL(variable8,COLOR_abstract_collection___Iterator___next))(variable8) /*ArrayIterator::next*/;
-  }
-  break_77: while(0);
-  variable8 = NEW_list___List___init(); /*new List[PSuperclass]*/
-  ATTR_parser_nodes___AClassdef____n_superclasses( self) /*AClassdef::_n_superclasses*/ = variable8;
-  variable8 = ((array___AbstractArray___iterator_t)CALL( variable6 /*n_superclasses*/,COLOR_abstract_collection___Collection___iterator))( variable6 /*n_superclasses*/) /*Array::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 failed: src/parser//parser_prod.nit:770,3--26\n"); 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*/) /*List::add*/;
-    ((parser_prod___PNode___parent__eq_t)CALL( variable9 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable9 /*n*/,  self) /*PSuperclass::parent=*/;
-    continue_78: while(0);
-    ((array___ArrayIterator___next_t)CALL(variable8,COLOR_abstract_collection___Iterator___next))(variable8) /*ArrayIterator::next*/;
-  }
-  break_78: while(0);
-  variable8 = NEW_list___List___init(); /*new List[PPropdef]*/
-  ATTR_parser_nodes___AClassdef____n_propdefs( self) /*AClassdef::_n_propdefs*/ = variable8;
-  variable8 = ((array___AbstractArray___iterator_t)CALL( variable7 /*n_propdefs*/,COLOR_abstract_collection___Collection___iterator))( variable7 /*n_propdefs*/) /*Array::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 failed: src/parser//parser_prod.nit:776,3--23\n"); 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*/) /*List::add*/;
-    ((parser_prod___PNode___parent__eq_t)CALL( variable9 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable9 /*n*/,  self) /*PPropdef::parent=*/;
-    continue_79: while(0);
-    ((array___ArrayIterator___next_t)CALL(variable8,COLOR_abstract_collection___Iterator___next))(variable8) /*ArrayIterator::next*/;
+void parser_prod___AClassdef___n_id__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 746, LOCATE_parser_prod___AClassdef___n_id__eq};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  ATTR_parser_nodes___AClassdef____n_id(variable[0]) /*AClassdef::_n_id*/ =  variable[1] /*n*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[0]) /*PNode::parent=*/;
   }
-  break_79: while(0);
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AClassdef].i] = 1;
+  return_label93: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AClassdef___replace_child(val_t  self, val_t  param0, val_t  param1) {
-  struct trace_t trace = {NULL, "parser_prod::AClassdef::replace_child (src/parser//parser_prod.nit:782,5--868:22)"};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  val_t variable3;
-    val_t variable4;
-  trace.prev = tracehead; tracehead = &trace;
-  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*/) /*PNode::==*/)))))));
-  if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert failed: src/parser//parser_prod.nit:784,9--32\n"); 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*/) /*PDoc::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*PNode::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_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 failed: src/parser//parser_prod.nit:788,3--27\n"); 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_label80;
-  }
-  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*/) /*TKwredef::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*PNode::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_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 failed: src/parser//parser_prod.nit:798,3--31\n"); 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_label80;
-  }
-  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*/) /*PVisibility::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*PNode::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_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 failed: src/parser//parser_prod.nit:808,3--34\n"); 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_label80;
-  }
-  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*/) /*PClasskind::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*PNode::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_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 failed: src/parser//parser_prod.nit:818,3--33\n"); 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_label80;
-  }
-  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*/) /*TClassid::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*PNode::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_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 failed: src/parser//parser_prod.nit:828,3--31\n"); 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_label80;
-  }
-  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[Int]*/
-  variable2 = variable3;
-  variable2 = ((range___Range___iterator_t)CALL(variable2,COLOR_abstract_collection___Collection___iterator))(variable2) /*Range::iterator*/;
+  struct trace_t trace = {NULL, NULL, 808, LOCATE_parser_prod___AClassdef___replace_child};
+  val_t variable[8];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Local variable */
+  variable[2] =  param1;
+  /* Register variable[3]: Method return value and escape marker */
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AClassdef___replace_child, LOCATE_parser_prod, 810); nit_exit(1);}
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___AClassdef____n_doc(variable[0]) /*AClassdef::_n_doc*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*PNode::parent=*/;
+      /* Register variable[4]: Result */
+      variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
+      if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AClassdef___replace_child, LOCATE_parser_prod, 814); nit_exit(1);}
+      ATTR_parser_nodes___AClassdef____n_doc(variable[0]) /*AClassdef::_n_doc*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      ATTR_parser_nodes___AClassdef____n_doc(variable[0]) /*AClassdef::_n_doc*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label94;
+  }
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___AClassdef____n_kwredef(variable[0]) /*AClassdef::_n_kwredef*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*PNode::parent=*/;
+      /* Register variable[4]: Result */
+      variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
+      if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AClassdef___replace_child, LOCATE_parser_prod, 824); nit_exit(1);}
+      ATTR_parser_nodes___AClassdef____n_kwredef(variable[0]) /*AClassdef::_n_kwredef*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      ATTR_parser_nodes___AClassdef____n_kwredef(variable[0]) /*AClassdef::_n_kwredef*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label94;
+  }
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___AClassdef____n_visibility(variable[0]) /*AClassdef::_n_visibility*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*PNode::parent=*/;
+      /* Register variable[4]: Result */
+      variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
+      if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AClassdef___replace_child, LOCATE_parser_prod, 834); nit_exit(1);}
+      ATTR_parser_nodes___AClassdef____n_visibility(variable[0]) /*AClassdef::_n_visibility*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      ATTR_parser_nodes___AClassdef____n_visibility(variable[0]) /*AClassdef::_n_visibility*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label94;
+  }
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___AClassdef____n_classkind(variable[0]) /*AClassdef::_n_classkind*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*PNode::parent=*/;
+      /* Register variable[4]: Result */
+      variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PClasskind, ID_PClasskind)) /*cast PClasskind*/;
+      if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AClassdef___replace_child, LOCATE_parser_prod, 844); nit_exit(1);}
+      ATTR_parser_nodes___AClassdef____n_classkind(variable[0]) /*AClassdef::_n_classkind*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      ATTR_parser_nodes___AClassdef____n_classkind(variable[0]) /*AClassdef::_n_classkind*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label94;
+  }
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___AClassdef____n_id(variable[0]) /*AClassdef::_n_id*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*PNode::parent=*/;
+      /* Register variable[4]: Result */
+      variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_TClassid, ID_TClassid)) /*cast TClassid*/;
+      if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AClassdef___replace_child, LOCATE_parser_prod, 854); nit_exit(1);}
+      ATTR_parser_nodes___AClassdef____n_id(variable[0]) /*AClassdef::_n_id*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      ATTR_parser_nodes___AClassdef____n_id(variable[0]) /*AClassdef::_n_id*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label94;
+  }
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___AClassdef____n_formaldefs(variable[0]) /*AClassdef::_n_formaldefs*/;
+  /* Register variable[4]: Result */
+  variable[4] = CALL_abstract_collection___Collection___length(variable[4])(variable[4]) /*List::length*/;
+  /* Register variable[4]: Result */
+  variable[4] = NEW_Range_range___Range___without_last( TAG_Int(0), variable[4]) /*new Range[Int]*/;
+  /* Register variable[4]: For iterator */
+  variable[4] = CALL_abstract_collection___Collection___iterator(variable[4])(variable[4]) /*Range::iterator*/;
   while (true) { /*for*/
-    variable3 = ((abstract_collection___Iterator___is_ok_t)CALL(variable2,COLOR_abstract_collection___Iterator___is_ok))(variable2) /*Iterator::is_ok*/;
-    if (!UNTAG_Bool(variable3)) break; /*for*/
-    variable3 = ((abstract_collection___Iterator___item_t)CALL(variable2,COLOR_abstract_collection___Iterator___item))(variable2) /*Iterator::item*/;
-    variable4 = ATTR_parser_nodes___AClassdef____n_formaldefs( self) /*AClassdef::_n_formaldefs*/;
-    variable4 = ((list___List_____bra_t)CALL(variable4,COLOR_abstract_collection___Map_____bra))(variable4,  variable3 /*i*/) /*List::[]*/;
-    variable4 = TAG_Bool((variable4 ==  variable0 /*old_child*/) || ((variable4 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable4,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable4, variable0 /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable4,COLOR_kernel___Object_____eqeq))(variable4,  variable0 /*old_child*/) /*PFormaldef::==*/)))));
-    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*/) /*PNode::==*/)))))));
-      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 failed: src/parser//parser_prod.nit:838,7--37\n"); 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) /*PFormaldef::parent=*/;
+    /* Register variable[5]: For 'is_ok' result */
+    variable[5] = CALL_abstract_collection___Iterator___is_ok(variable[4])(variable[4]) /*Iterator::is_ok*/;
+    if (!UNTAG_Bool(variable[5])) break; /*for*/
+    variable[5] = CALL_abstract_collection___Iterator___item(variable[4])(variable[4]) /*Iterator::item*/ /* Ensure var: For item*/;
+    /* Register variable[6]: Local variable */
+    variable[6] = variable[5];
+    /* Register variable[7]: Result */
+    variable[7] = ATTR_parser_nodes___AClassdef____n_formaldefs(variable[0]) /*AClassdef::_n_formaldefs*/;
+    /* Register variable[7]: Result */
+    variable[7] = CALL_abstract_collection___MapRead_____bra(variable[7])(variable[7],  variable[6] /*i*/) /*List::[]*/;
+    /* Register variable[7]: Result */
+    variable[7] = TAG_Bool((variable[7] ==  variable[1] /*old_child*/) || ((variable[7] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[7])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[7], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[7])(variable[7],  variable[1] /*old_child*/) /*Object::==*/)))));
+    if (UNTAG_Bool(variable[7])) { /*if*/
+      /* Register variable[7]: Result */
+      variable[7] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+      if (UNTAG_Bool(variable[7])) { /*if*/
+        /* Register variable[7]: Result */
+        variable[7] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PFormaldef, ID_PFormaldef)) /*cast PFormaldef*/;
+        if (!UNTAG_Bool(variable[7])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AClassdef___replace_child, LOCATE_parser_prod, 864); nit_exit(1);}
+        /* Register variable[7]: Result */
+        variable[7] = ATTR_parser_nodes___AClassdef____n_formaldefs(variable[0]) /*AClassdef::_n_formaldefs*/;
+        CALL_abstract_collection___Map_____braeq(variable[7])(variable[7],  variable[6] /*i*/,  variable[2] /*new_child*/) /*List::[]=*/;
+        CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*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*/;
+        /* Register variable[7]: Result */
+        variable[7] = ATTR_parser_nodes___AClassdef____n_formaldefs(variable[0]) /*AClassdef::_n_formaldefs*/;
+        CALL_abstract_collection___Map___remove_at(variable[7])(variable[7],  variable[6] /*i*/) /*List::remove_at*/;
       }
-      goto return_label80;
-    }
-    continue_81: while(0);
-    ((abstract_collection___Iterator___next_t)CALL(variable2,COLOR_abstract_collection___Iterator___next))(variable2) /*Iterator::next*/;
-  }
-  break_81: 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[Int]*/
-  variable2 = variable3;
-  variable2 = ((range___Range___iterator_t)CALL(variable2,COLOR_abstract_collection___Collection___iterator))(variable2) /*Range::iterator*/;
+      goto return_label94;
+    }
+    continue_95: while(0);
+    CALL_abstract_collection___Iterator___next(variable[4])(variable[4]) /*Iterator::next*/;
+  }
+  break_95: while(0);
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___AClassdef____n_superclasses(variable[0]) /*AClassdef::_n_superclasses*/;
+  /* Register variable[4]: Result */
+  variable[4] = CALL_abstract_collection___Collection___length(variable[4])(variable[4]) /*List::length*/;
+  /* Register variable[4]: Result */
+  variable[4] = NEW_Range_range___Range___without_last( TAG_Int(0), variable[4]) /*new Range[Int]*/;
+  /* Register variable[4]: For iterator */
+  variable[4] = CALL_abstract_collection___Collection___iterator(variable[4])(variable[4]) /*Range::iterator*/;
   while (true) { /*for*/
-    variable3 = ((abstract_collection___Iterator___is_ok_t)CALL(variable2,COLOR_abstract_collection___Iterator___is_ok))(variable2) /*Iterator::is_ok*/;
-    if (!UNTAG_Bool(variable3)) break; /*for*/
-    variable3 = ((abstract_collection___Iterator___item_t)CALL(variable2,COLOR_abstract_collection___Iterator___item))(variable2) /*Iterator::item*/;
-    variable4 = ATTR_parser_nodes___AClassdef____n_superclasses( self) /*AClassdef::_n_superclasses*/;
-    variable4 = ((list___List_____bra_t)CALL(variable4,COLOR_abstract_collection___Map_____bra))(variable4,  variable3 /*i*/) /*List::[]*/;
-    variable4 = TAG_Bool((variable4 ==  variable0 /*old_child*/) || ((variable4 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable4,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable4, variable0 /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable4,COLOR_kernel___Object_____eqeq))(variable4,  variable0 /*old_child*/) /*PSuperclass::==*/)))));
-    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*/) /*PNode::==*/)))))));
-      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 failed: src/parser//parser_prod.nit:850,7--38\n"); 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) /*PSuperclass::parent=*/;
+    /* Register variable[5]: For 'is_ok' result */
+    variable[5] = CALL_abstract_collection___Iterator___is_ok(variable[4])(variable[4]) /*Iterator::is_ok*/;
+    if (!UNTAG_Bool(variable[5])) break; /*for*/
+    variable[5] = CALL_abstract_collection___Iterator___item(variable[4])(variable[4]) /*Iterator::item*/ /* Ensure var: For item*/;
+    /* Register variable[6]: Local variable */
+    variable[6] = variable[5];
+    /* Register variable[7]: Result */
+    variable[7] = ATTR_parser_nodes___AClassdef____n_superclasses(variable[0]) /*AClassdef::_n_superclasses*/;
+    /* Register variable[7]: Result */
+    variable[7] = CALL_abstract_collection___MapRead_____bra(variable[7])(variable[7],  variable[6] /*i*/) /*List::[]*/;
+    /* Register variable[7]: Result */
+    variable[7] = TAG_Bool((variable[7] ==  variable[1] /*old_child*/) || ((variable[7] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[7])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[7], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[7])(variable[7],  variable[1] /*old_child*/) /*Object::==*/)))));
+    if (UNTAG_Bool(variable[7])) { /*if*/
+      /* Register variable[7]: Result */
+      variable[7] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+      if (UNTAG_Bool(variable[7])) { /*if*/
+        /* Register variable[7]: Result */
+        variable[7] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PSuperclass, ID_PSuperclass)) /*cast PSuperclass*/;
+        if (!UNTAG_Bool(variable[7])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AClassdef___replace_child, LOCATE_parser_prod, 876); nit_exit(1);}
+        /* Register variable[7]: Result */
+        variable[7] = ATTR_parser_nodes___AClassdef____n_superclasses(variable[0]) /*AClassdef::_n_superclasses*/;
+        CALL_abstract_collection___Map_____braeq(variable[7])(variable[7],  variable[6] /*i*/,  variable[2] /*new_child*/) /*List::[]=*/;
+        CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*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*/;
+        /* Register variable[7]: Result */
+        variable[7] = ATTR_parser_nodes___AClassdef____n_superclasses(variable[0]) /*AClassdef::_n_superclasses*/;
+        CALL_abstract_collection___Map___remove_at(variable[7])(variable[7],  variable[6] /*i*/) /*List::remove_at*/;
       }
-      goto return_label80;
+      goto return_label94;
     }
-    continue_82: while(0);
-    ((abstract_collection___Iterator___next_t)CALL(variable2,COLOR_abstract_collection___Iterator___next))(variable2) /*Iterator::next*/;
+    continue_96: while(0);
+    CALL_abstract_collection___Iterator___next(variable[4])(variable[4]) /*Iterator::next*/;
   }
-  break_82: 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[Int]*/
-  variable2 = variable3;
-  variable2 = ((range___Range___iterator_t)CALL(variable2,COLOR_abstract_collection___Collection___iterator))(variable2) /*Range::iterator*/;
+  break_96: while(0);
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___AClassdef____n_propdefs(variable[0]) /*AClassdef::_n_propdefs*/;
+  /* Register variable[4]: Result */
+  variable[4] = CALL_abstract_collection___Collection___length(variable[4])(variable[4]) /*List::length*/;
+  /* Register variable[4]: Result */
+  variable[4] = NEW_Range_range___Range___without_last( TAG_Int(0), variable[4]) /*new Range[Int]*/;
+  /* Register variable[4]: For iterator */
+  variable[4] = CALL_abstract_collection___Collection___iterator(variable[4])(variable[4]) /*Range::iterator*/;
   while (true) { /*for*/
-    variable3 = ((abstract_collection___Iterator___is_ok_t)CALL(variable2,COLOR_abstract_collection___Iterator___is_ok))(variable2) /*Iterator::is_ok*/;
-    if (!UNTAG_Bool(variable3)) break; /*for*/
-    variable3 = ((abstract_collection___Iterator___item_t)CALL(variable2,COLOR_abstract_collection___Iterator___item))(variable2) /*Iterator::item*/;
-    variable4 = ATTR_parser_nodes___AClassdef____n_propdefs( self) /*AClassdef::_n_propdefs*/;
-    variable4 = ((list___List_____bra_t)CALL(variable4,COLOR_abstract_collection___Map_____bra))(variable4,  variable3 /*i*/) /*List::[]*/;
-    variable4 = TAG_Bool((variable4 ==  variable0 /*old_child*/) || ((variable4 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable4,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable4, variable0 /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable4,COLOR_kernel___Object_____eqeq))(variable4,  variable0 /*old_child*/) /*PPropdef::==*/)))));
-    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*/) /*PNode::==*/)))))));
-      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 failed: src/parser//parser_prod.nit:862,7--35\n"); 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) /*PPropdef::parent=*/;
+    /* Register variable[5]: For 'is_ok' result */
+    variable[5] = CALL_abstract_collection___Iterator___is_ok(variable[4])(variable[4]) /*Iterator::is_ok*/;
+    if (!UNTAG_Bool(variable[5])) break; /*for*/
+    variable[5] = CALL_abstract_collection___Iterator___item(variable[4])(variable[4]) /*Iterator::item*/ /* Ensure var: For item*/;
+    /* Register variable[6]: Local variable */
+    variable[6] = variable[5];
+    /* Register variable[7]: Result */
+    variable[7] = ATTR_parser_nodes___AClassdef____n_propdefs(variable[0]) /*AClassdef::_n_propdefs*/;
+    /* Register variable[7]: Result */
+    variable[7] = CALL_abstract_collection___MapRead_____bra(variable[7])(variable[7],  variable[6] /*i*/) /*List::[]*/;
+    /* Register variable[7]: Result */
+    variable[7] = TAG_Bool((variable[7] ==  variable[1] /*old_child*/) || ((variable[7] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[7])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[7], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[7])(variable[7],  variable[1] /*old_child*/) /*Object::==*/)))));
+    if (UNTAG_Bool(variable[7])) { /*if*/
+      /* Register variable[7]: Result */
+      variable[7] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+      if (UNTAG_Bool(variable[7])) { /*if*/
+        /* Register variable[7]: Result */
+        variable[7] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PPropdef, ID_PPropdef)) /*cast PPropdef*/;
+        if (!UNTAG_Bool(variable[7])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AClassdef___replace_child, LOCATE_parser_prod, 888); nit_exit(1);}
+        /* Register variable[7]: Result */
+        variable[7] = ATTR_parser_nodes___AClassdef____n_propdefs(variable[0]) /*AClassdef::_n_propdefs*/;
+        CALL_abstract_collection___Map_____braeq(variable[7])(variable[7],  variable[6] /*i*/,  variable[2] /*new_child*/) /*List::[]=*/;
+        CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*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*/;
+        /* Register variable[7]: Result */
+        variable[7] = ATTR_parser_nodes___AClassdef____n_propdefs(variable[0]) /*AClassdef::_n_propdefs*/;
+        CALL_abstract_collection___Map___remove_at(variable[7])(variable[7],  variable[6] /*i*/) /*List::remove_at*/;
       }
-      goto return_label80;
+      goto return_label94;
     }
-    continue_83: while(0);
-    ((abstract_collection___Iterator___next_t)CALL(variable2,COLOR_abstract_collection___Iterator___next))(variable2) /*Iterator::next*/;
+    continue_97: while(0);
+    CALL_abstract_collection___Iterator___next(variable[4])(variable[4]) /*Iterator::next*/;
   }
-  break_83: while(0);
-  return_label80: while(false);
+  break_97: while(0);
+  return_label94: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AClassdef___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AClassdef::visit_all (src/parser//parser_prod.nit:873,5--897:25)"};
-  val_t variable0;
-  val_t variable1;
-    val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  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*/) /*PDoc::==*/)))))));
-  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*/) /*TKwredef::==*/)))))));
-  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*/) /*PVisibility::==*/)))))));
-  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*/) /*PClasskind::==*/)))))));
-  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*/) /*TClassid::==*/)))))));
-  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*/;
+  struct trace_t trace = {NULL, NULL, 899, LOCATE_parser_prod___AClassdef___visit_all};
+  val_t variable[6];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AClassdef____n_doc(variable[0]) /*AClassdef::_n_doc*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AClassdef____n_doc(variable[0]) /*AClassdef::_n_doc*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AClassdef____n_kwredef(variable[0]) /*AClassdef::_n_kwredef*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AClassdef____n_kwredef(variable[0]) /*AClassdef::_n_kwredef*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AClassdef____n_visibility(variable[0]) /*AClassdef::_n_visibility*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AClassdef____n_visibility(variable[0]) /*AClassdef::_n_visibility*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AClassdef____n_classkind(variable[0]) /*AClassdef::_n_classkind*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AClassdef____n_classkind(variable[0]) /*AClassdef::_n_classkind*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AClassdef____n_id(variable[0]) /*AClassdef::_n_id*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AClassdef____n_id(variable[0]) /*AClassdef::_n_id*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AClassdef____n_formaldefs(variable[0]) /*AClassdef::_n_formaldefs*/;
+  /* Register variable[3]: For iterator */
+  variable[3] = CALL_abstract_collection___Collection___iterator(variable[3])(variable[3]) /*List::iterator*/;
   while (true) { /*for*/
-    variable2 = ((list___ListIterator___is_ok_t)CALL(variable1,COLOR_abstract_collection___Iterator___is_ok))(variable1) /*ListIterator::is_ok*/;
-    if (!UNTAG_Bool(variable2)) break; /*for*/
-    variable2 = ((list___ListIterator___item_t)CALL(variable1,COLOR_abstract_collection___Iterator___item))(variable1) /*ListIterator::item*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/,  variable2 /*n*/) /*Visitor::visit*/;
-    continue_85: while(0);
-    ((list___ListIterator___next_t)CALL(variable1,COLOR_abstract_collection___Iterator___next))(variable1) /*ListIterator::next*/;
-  }
-  break_85: 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*/;
+    /* Register variable[4]: For 'is_ok' result */
+    variable[4] = CALL_abstract_collection___Iterator___is_ok(variable[3])(variable[3]) /*ListIterator::is_ok*/;
+    if (!UNTAG_Bool(variable[4])) break; /*for*/
+    variable[4] = CALL_abstract_collection___Iterator___item(variable[3])(variable[3]) /*ListIterator::item*/ /* Ensure var: For item*/;
+    /* Register variable[5]: Local variable */
+    variable[5] = variable[4];
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/,  variable[5] /*n*/) /*Visitor::visit*/;
+    continue_99: while(0);
+    CALL_abstract_collection___Iterator___next(variable[3])(variable[3]) /*ListIterator::next*/;
+  }
+  break_99: while(0);
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AClassdef____n_superclasses(variable[0]) /*AClassdef::_n_superclasses*/;
+  /* Register variable[3]: For iterator */
+  variable[3] = CALL_abstract_collection___Collection___iterator(variable[3])(variable[3]) /*List::iterator*/;
   while (true) { /*for*/
-    variable2 = ((list___ListIterator___is_ok_t)CALL(variable1,COLOR_abstract_collection___Iterator___is_ok))(variable1) /*ListIterator::is_ok*/;
-    if (!UNTAG_Bool(variable2)) break; /*for*/
-    variable2 = ((list___ListIterator___item_t)CALL(variable1,COLOR_abstract_collection___Iterator___item))(variable1) /*ListIterator::item*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/,  variable2 /*n*/) /*Visitor::visit*/;
-    continue_86: while(0);
-    ((list___ListIterator___next_t)CALL(variable1,COLOR_abstract_collection___Iterator___next))(variable1) /*ListIterator::next*/;
-  }
-  break_86: 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*/;
+    /* Register variable[4]: For 'is_ok' result */
+    variable[4] = CALL_abstract_collection___Iterator___is_ok(variable[3])(variable[3]) /*ListIterator::is_ok*/;
+    if (!UNTAG_Bool(variable[4])) break; /*for*/
+    variable[4] = CALL_abstract_collection___Iterator___item(variable[3])(variable[3]) /*ListIterator::item*/ /* Ensure var: For item*/;
+    /* Register variable[5]: Local variable */
+    variable[5] = variable[4];
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/,  variable[5] /*n*/) /*Visitor::visit*/;
+    continue_100: while(0);
+    CALL_abstract_collection___Iterator___next(variable[3])(variable[3]) /*ListIterator::next*/;
+  }
+  break_100: while(0);
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AClassdef____n_propdefs(variable[0]) /*AClassdef::_n_propdefs*/;
+  /* Register variable[3]: For iterator */
+  variable[3] = CALL_abstract_collection___Collection___iterator(variable[3])(variable[3]) /*List::iterator*/;
   while (true) { /*for*/
-    variable2 = ((list___ListIterator___is_ok_t)CALL(variable1,COLOR_abstract_collection___Iterator___is_ok))(variable1) /*ListIterator::is_ok*/;
-    if (!UNTAG_Bool(variable2)) break; /*for*/
-    variable2 = ((list___ListIterator___item_t)CALL(variable1,COLOR_abstract_collection___Iterator___item))(variable1) /*ListIterator::item*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/,  variable2 /*n*/) /*Visitor::visit*/;
-    continue_87: while(0);
-    ((list___ListIterator___next_t)CALL(variable1,COLOR_abstract_collection___Iterator___next))(variable1) /*ListIterator::next*/;
+    /* Register variable[4]: For 'is_ok' result */
+    variable[4] = CALL_abstract_collection___Iterator___is_ok(variable[3])(variable[3]) /*ListIterator::is_ok*/;
+    if (!UNTAG_Bool(variable[4])) break; /*for*/
+    variable[4] = CALL_abstract_collection___Iterator___item(variable[3])(variable[3]) /*ListIterator::item*/ /* Ensure var: For item*/;
+    /* Register variable[5]: Local variable */
+    variable[5] = variable[4];
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/,  variable[5] /*n*/) /*Visitor::visit*/;
+    continue_101: while(0);
+    CALL_abstract_collection___Iterator___next(variable[3])(variable[3]) /*ListIterator::next*/;
   }
-  break_87: while(0);
+  break_101: while(0);
+  return_label98: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AClassdef___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AClassdef::visit_all_reverse (src/parser//parser_prod.nit:901,5--936:11)"};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  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*/) /*PDoc::==*/)))))));
-  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*/) /*TKwredef::==*/)))))));
-  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*/) /*PVisibility::==*/)))))));
-  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*/) /*PClasskind::==*/)))))));
-  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*/) /*TClassid::==*/)))))));
-  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;
+  struct trace_t trace = {NULL, NULL, 927, LOCATE_parser_prod___AClassdef___visit_all_reverse};
+  val_t variable[5];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AClassdef____n_doc(variable[0]) /*AClassdef::_n_doc*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AClassdef____n_doc(variable[0]) /*AClassdef::_n_doc*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AClassdef____n_kwredef(variable[0]) /*AClassdef::_n_kwredef*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AClassdef____n_kwredef(variable[0]) /*AClassdef::_n_kwredef*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AClassdef____n_visibility(variable[0]) /*AClassdef::_n_visibility*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AClassdef____n_visibility(variable[0]) /*AClassdef::_n_visibility*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AClassdef____n_classkind(variable[0]) /*AClassdef::_n_classkind*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AClassdef____n_classkind(variable[0]) /*AClassdef::_n_classkind*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AClassdef____n_id(variable[0]) /*AClassdef::_n_id*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AClassdef____n_id(variable[0]) /*AClassdef::_n_id*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Local variable */
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___AClassdef____n_formaldefs(variable[0]) /*AClassdef::_n_formaldefs*/;
+  /* Register variable[4]: Result */
+  variable[4] = CALL_abstract_collection___Collection___length(variable[4])(variable[4]) /*List::length*/;
+  variable[3] = variable[4];
   while (true) { /*while*/
-    variable2 = TAG_Bool(UNTAG_Int( variable1 /*i*/)>=UNTAG_Int( TAG_Int(0)));
-    if (!UNTAG_Bool(variable2)) break; /* while*/
-    variable2 = ATTR_parser_nodes___AClassdef____n_formaldefs( self) /*AClassdef::_n_formaldefs*/;
-    variable2 = ((list___List_____bra_t)CALL(variable2,COLOR_abstract_collection___Map_____bra))(variable2,  variable1 /*i*/) /*List::[]*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable2) /*Visitor::visit*/;
-    variable2 = TAG_Int(UNTAG_Int( variable1 /*i*/)-UNTAG_Int( TAG_Int(1)));
-    variable1 = variable2 /*i=*/;
-    continue_89: while(0);
-  }
-  break_89: 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;
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(UNTAG_Int( variable[3] /*i*/)>=UNTAG_Int( TAG_Int(0)));
+    if (!UNTAG_Bool(variable[4])) break; /* while*/
+    /* Register variable[4]: Result */
+    variable[4] = ATTR_parser_nodes___AClassdef____n_formaldefs(variable[0]) /*AClassdef::_n_formaldefs*/;
+    /* Register variable[4]: Result */
+    variable[4] = CALL_abstract_collection___MapRead_____bra(variable[4])(variable[4],  variable[3] /*i*/) /*List::[]*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[4]) /*Visitor::visit*/;
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Int(UNTAG_Int( variable[3] /*i*/)-UNTAG_Int( TAG_Int(1)));
+    variable[3] = variable[4] /*i=*/;
+    continue_103: while(0);
+  }
+  break_103: while(0);
+  /* Register variable[3]: Local variable */
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___AClassdef____n_superclasses(variable[0]) /*AClassdef::_n_superclasses*/;
+  /* Register variable[4]: Result */
+  variable[4] = CALL_abstract_collection___Collection___length(variable[4])(variable[4]) /*List::length*/;
+  variable[3] = variable[4];
   while (true) { /*while*/
-    variable2 = TAG_Bool(UNTAG_Int( variable1 /*i*/)>=UNTAG_Int( TAG_Int(0)));
-    if (!UNTAG_Bool(variable2)) break; /* while*/
-    variable2 = ATTR_parser_nodes___AClassdef____n_superclasses( self) /*AClassdef::_n_superclasses*/;
-    variable2 = ((list___List_____bra_t)CALL(variable2,COLOR_abstract_collection___Map_____bra))(variable2,  variable1 /*i*/) /*List::[]*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable2) /*Visitor::visit*/;
-    variable2 = TAG_Int(UNTAG_Int( variable1 /*i*/)-UNTAG_Int( TAG_Int(1)));
-    variable1 = variable2 /*i=*/;
-    continue_90: while(0);
-  }
-  break_90: 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;
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(UNTAG_Int( variable[3] /*i*/)>=UNTAG_Int( TAG_Int(0)));
+    if (!UNTAG_Bool(variable[4])) break; /* while*/
+    /* Register variable[4]: Result */
+    variable[4] = ATTR_parser_nodes___AClassdef____n_superclasses(variable[0]) /*AClassdef::_n_superclasses*/;
+    /* Register variable[4]: Result */
+    variable[4] = CALL_abstract_collection___MapRead_____bra(variable[4])(variable[4],  variable[3] /*i*/) /*List::[]*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[4]) /*Visitor::visit*/;
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Int(UNTAG_Int( variable[3] /*i*/)-UNTAG_Int( TAG_Int(1)));
+    variable[3] = variable[4] /*i=*/;
+    continue_104: while(0);
+  }
+  break_104: while(0);
+  /* Register variable[3]: Local variable */
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___AClassdef____n_propdefs(variable[0]) /*AClassdef::_n_propdefs*/;
+  /* Register variable[4]: Result */
+  variable[4] = CALL_abstract_collection___Collection___length(variable[4])(variable[4]) /*List::length*/;
+  variable[3] = variable[4];
   while (true) { /*while*/
-    variable2 = TAG_Bool(UNTAG_Int( variable1 /*i*/)>=UNTAG_Int( TAG_Int(0)));
-    if (!UNTAG_Bool(variable2)) break; /* while*/
-    variable2 = ATTR_parser_nodes___AClassdef____n_propdefs( self) /*AClassdef::_n_propdefs*/;
-    variable2 = ((list___List_____bra_t)CALL(variable2,COLOR_abstract_collection___Map_____bra))(variable2,  variable1 /*i*/) /*List::[]*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable2) /*Visitor::visit*/;
-    variable2 = TAG_Int(UNTAG_Int( variable1 /*i*/)-UNTAG_Int( TAG_Int(1)));
-    variable1 = variable2 /*i=*/;
-    continue_91: while(0);
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(UNTAG_Int( variable[3] /*i*/)>=UNTAG_Int( TAG_Int(0)));
+    if (!UNTAG_Bool(variable[4])) break; /* while*/
+    /* Register variable[4]: Result */
+    variable[4] = ATTR_parser_nodes___AClassdef____n_propdefs(variable[0]) /*AClassdef::_n_propdefs*/;
+    /* Register variable[4]: Result */
+    variable[4] = CALL_abstract_collection___MapRead_____bra(variable[4])(variable[4],  variable[3] /*i*/) /*List::[]*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[4]) /*Visitor::visit*/;
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Int(UNTAG_Int( variable[3] /*i*/)-UNTAG_Int( TAG_Int(1)));
+    variable[3] = variable[4] /*i=*/;
+    continue_105: while(0);
   }
-  break_91: while(0);
+  break_105: while(0);
+  return_label102: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___ATopClassdef___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, "parser_prod::ATopClassdef::empty_init (src/parser//parser_prod.nit:943,5--27)"};
+void parser_prod___AClassdef___empty_init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 754, LOCATE_parser_prod___AClassdef___empty_init};
+  val_t variable[2];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ATopClassdef].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ATopClassdef].i] = 1;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AClassdef].i]) return;
+  /* Register variable[1]: Method return value and escape marker */
+  return_label106: while(false);
+  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AClassdef].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser_prod___ATopClassdef___init_atopclassdef(val_t  self, val_t  param0, int* init_table) {
-  struct trace_t trace = {NULL, "parser_prod::ATopClassdef::init_atopclassdef (src/parser//parser_prod.nit:945,5--953:17)"};
-  val_t variable0;
-  val_t variable1;
-    val_t variable2;
-    val_t variable3;
-  trace.prev = tracehead; tracehead = &trace;
-  variable0 =  param0;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ATopClassdef].i]) return;
-  variable1 = NEW_list___List___init(); /*new List[PPropdef]*/
-  ATTR_parser_nodes___ATopClassdef____n_propdefs( self) /*ATopClassdef::_n_propdefs*/ = variable1;
-  variable1 = ((array___AbstractArray___iterator_t)CALL( variable0 /*n_propdefs*/,COLOR_abstract_collection___Collection___iterator))( variable0 /*n_propdefs*/) /*Array::iterator*/;
+void parser_prod___AClassdef___init_aclassdef(val_t  self, val_t  param0, val_t  param1, val_t  param2, val_t  param3, val_t  param4, val_t  param5, val_t  param6, val_t  param7, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 756, LOCATE_parser_prod___AClassdef___init_aclassdef};
+  val_t variable[14];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Local variable */
+  variable[2] =  param1;
+  /* Register variable[3]: Local variable */
+  variable[3] =  param2;
+  /* Register variable[4]: Local variable */
+  variable[4] =  param3;
+  /* Register variable[5]: Local variable */
+  variable[5] =  param4;
+  /* Register variable[6]: Local variable */
+  variable[6] =  param5;
+  /* Register variable[7]: Local variable */
+  variable[7] =  param6;
+  /* Register variable[8]: Local variable */
+  variable[8] =  param7;
+  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AClassdef].i]) return;
+  /* Register variable[9]: Method return value and escape marker */
+  CALL_parser_prod___AClassdef___empty_init(variable[0])(variable[0], init_table /*YYY*/) /*AClassdef::empty_init*/;
+  ATTR_parser_nodes___AClassdef____n_doc(variable[0]) /*AClassdef::_n_doc*/ =  variable[1] /*n_doc*/;
+  /* Register variable[10]: Result */
+  variable[10] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_doc*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_doc*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n_doc*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_doc*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n_doc*/)( variable[1] /*n_doc*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[10])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n_doc*/)( variable[1] /*n_doc*/, variable[0]) /*PNode::parent=*/;
+  }
+  ATTR_parser_nodes___AClassdef____n_kwredef(variable[0]) /*AClassdef::_n_kwredef*/ =  variable[2] /*n_kwredef*/;
+  /* Register variable[10]: Result */
+  variable[10] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*n_kwredef*/ ==  NIT_NULL /*null*/) || (( variable[2] /*n_kwredef*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*n_kwredef*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*n_kwredef*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*n_kwredef*/)( variable[2] /*n_kwredef*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[10])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[2] /*n_kwredef*/)( variable[2] /*n_kwredef*/, variable[0]) /*PNode::parent=*/;
+  }
+  ATTR_parser_nodes___AClassdef____n_visibility(variable[0]) /*AClassdef::_n_visibility*/ =  variable[3] /*n_visibility*/;
+  /* Register variable[10]: Result */
+  variable[10] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[3] /*n_visibility*/ ==  NIT_NULL /*null*/) || (( variable[3] /*n_visibility*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[3] /*n_visibility*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[3] /*n_visibility*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[3] /*n_visibility*/)( variable[3] /*n_visibility*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[10])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[3] /*n_visibility*/)( variable[3] /*n_visibility*/, variable[0]) /*PNode::parent=*/;
+  }
+  ATTR_parser_nodes___AClassdef____n_classkind(variable[0]) /*AClassdef::_n_classkind*/ =  variable[4] /*n_classkind*/;
+  /* Register variable[10]: Result */
+  variable[10] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[4] /*n_classkind*/ ==  NIT_NULL /*null*/) || (( variable[4] /*n_classkind*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[4] /*n_classkind*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[4] /*n_classkind*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[4] /*n_classkind*/)( variable[4] /*n_classkind*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[10])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[4] /*n_classkind*/)( variable[4] /*n_classkind*/, variable[0]) /*PNode::parent=*/;
+  }
+  ATTR_parser_nodes___AClassdef____n_id(variable[0]) /*AClassdef::_n_id*/ =  variable[5] /*n_id*/;
+  /* Register variable[10]: Result */
+  variable[10] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[5] /*n_id*/ ==  NIT_NULL /*null*/) || (( variable[5] /*n_id*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[5] /*n_id*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[5] /*n_id*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[5] /*n_id*/)( variable[5] /*n_id*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[10])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[5] /*n_id*/)( variable[5] /*n_id*/, variable[0]) /*PNode::parent=*/;
+  }
+  /* Register variable[10]: Result */
+  variable[10] = NEW_List_list___List___init() /*new List[PFormaldef]*/;
+  ATTR_parser_nodes___AClassdef____n_formaldefs(variable[0]) /*AClassdef::_n_formaldefs*/ = variable[10];
+  /* Register variable[10]: For iterator */
+  variable[10] = CALL_abstract_collection___Collection___iterator( variable[6] /*n_formaldefs*/)( variable[6] /*n_formaldefs*/) /*Collection::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 failed: src/parser//parser_prod.nit:951,3--23\n"); 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*/) /*List::add*/;
-    ((parser_prod___PNode___parent__eq_t)CALL( variable2 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable2 /*n*/,  self) /*PPropdef::parent=*/;
-    continue_94: while(0);
-    ((array___ArrayIterator___next_t)CALL(variable1,COLOR_abstract_collection___Iterator___next))(variable1) /*ArrayIterator::next*/;
+    /* Register variable[11]: For 'is_ok' result */
+    variable[11] = CALL_abstract_collection___Iterator___is_ok(variable[10])(variable[10]) /*Iterator::is_ok*/;
+    if (!UNTAG_Bool(variable[11])) break; /*for*/
+    variable[11] = CALL_abstract_collection___Iterator___item(variable[10])(variable[10]) /*Iterator::item*/ /* Ensure var: For item*/;
+    /* Register variable[12]: Local variable */
+    variable[12] = variable[11];
+    /* Register variable[13]: Result */
+    variable[13] = TAG_Bool(( variable[12] /*n*/==NIT_NULL) || VAL_ISA( variable[12] /*n*/, COLOR_PFormaldef, ID_PFormaldef)) /*cast PFormaldef*/;
+    if (!UNTAG_Bool(variable[13])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AClassdef___init_aclassdef, LOCATE_parser_prod, 790); nit_exit(1);}
+    /* Register variable[13]: Result */
+    variable[13] = ATTR_parser_nodes___AClassdef____n_formaldefs(variable[0]) /*AClassdef::_n_formaldefs*/;
+    CALL_abstract_collection___SimpleCollection___add(variable[13])(variable[13],  variable[12] /*n*/) /*IndexedCollection::add*/;
+    CALL_parser_prod___PNode___parent__eq( variable[12] /*n*/)( variable[12] /*n*/, variable[0]) /*PNode::parent=*/;
+    continue_108: while(0);
+    CALL_abstract_collection___Iterator___next(variable[10])(variable[10]) /*Iterator::next*/;
+  }
+  break_108: while(0);
+  /* Register variable[10]: Result */
+  variable[10] = NEW_List_list___List___init() /*new List[PSuperclass]*/;
+  ATTR_parser_nodes___AClassdef____n_superclasses(variable[0]) /*AClassdef::_n_superclasses*/ = variable[10];
+  /* Register variable[10]: For iterator */
+  variable[10] = CALL_abstract_collection___Collection___iterator( variable[7] /*n_superclasses*/)( variable[7] /*n_superclasses*/) /*Collection::iterator*/;
+  while (true) { /*for*/
+    /* Register variable[11]: For 'is_ok' result */
+    variable[11] = CALL_abstract_collection___Iterator___is_ok(variable[10])(variable[10]) /*Iterator::is_ok*/;
+    if (!UNTAG_Bool(variable[11])) break; /*for*/
+    variable[11] = CALL_abstract_collection___Iterator___item(variable[10])(variable[10]) /*Iterator::item*/ /* Ensure var: For item*/;
+    /* Register variable[12]: Local variable */
+    variable[12] = variable[11];
+    /* Register variable[13]: Result */
+    variable[13] = TAG_Bool(( variable[12] /*n*/==NIT_NULL) || VAL_ISA( variable[12] /*n*/, COLOR_PSuperclass, ID_PSuperclass)) /*cast PSuperclass*/;
+    if (!UNTAG_Bool(variable[13])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AClassdef___init_aclassdef, LOCATE_parser_prod, 796); nit_exit(1);}
+    /* Register variable[13]: Result */
+    variable[13] = ATTR_parser_nodes___AClassdef____n_superclasses(variable[0]) /*AClassdef::_n_superclasses*/;
+    CALL_abstract_collection___SimpleCollection___add(variable[13])(variable[13],  variable[12] /*n*/) /*IndexedCollection::add*/;
+    CALL_parser_prod___PNode___parent__eq( variable[12] /*n*/)( variable[12] /*n*/, variable[0]) /*PNode::parent=*/;
+    continue_109: while(0);
+    CALL_abstract_collection___Iterator___next(variable[10])(variable[10]) /*Iterator::next*/;
   }
-  break_94: while(0);
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ATopClassdef].i] = 1;
+  break_109: while(0);
+  /* Register variable[10]: Result */
+  variable[10] = NEW_List_list___List___init() /*new List[PPropdef]*/;
+  ATTR_parser_nodes___AClassdef____n_propdefs(variable[0]) /*AClassdef::_n_propdefs*/ = variable[10];
+  /* Register variable[10]: For iterator */
+  variable[10] = CALL_abstract_collection___Collection___iterator( variable[8] /*n_propdefs*/)( variable[8] /*n_propdefs*/) /*Collection::iterator*/;
+  while (true) { /*for*/
+    /* Register variable[11]: For 'is_ok' result */
+    variable[11] = CALL_abstract_collection___Iterator___is_ok(variable[10])(variable[10]) /*Iterator::is_ok*/;
+    if (!UNTAG_Bool(variable[11])) break; /*for*/
+    variable[11] = CALL_abstract_collection___Iterator___item(variable[10])(variable[10]) /*Iterator::item*/ /* Ensure var: For item*/;
+    /* Register variable[12]: Local variable */
+    variable[12] = variable[11];
+    /* Register variable[13]: Result */
+    variable[13] = TAG_Bool(( variable[12] /*n*/==NIT_NULL) || VAL_ISA( variable[12] /*n*/, COLOR_PPropdef, ID_PPropdef)) /*cast PPropdef*/;
+    if (!UNTAG_Bool(variable[13])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AClassdef___init_aclassdef, LOCATE_parser_prod, 802); nit_exit(1);}
+    /* Register variable[13]: Result */
+    variable[13] = ATTR_parser_nodes___AClassdef____n_propdefs(variable[0]) /*AClassdef::_n_propdefs*/;
+    CALL_abstract_collection___SimpleCollection___add(variable[13])(variable[13],  variable[12] /*n*/) /*IndexedCollection::add*/;
+    CALL_parser_prod___PNode___parent__eq( variable[12] /*n*/)( variable[12] /*n*/, variable[0]) /*PNode::parent=*/;
+    continue_110: while(0);
+    CALL_abstract_collection___Iterator___next(variable[10])(variable[10]) /*Iterator::next*/;
+  }
+  break_110: while(0);
+  return_label107: while(false);
+  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AClassdef].i] = 1;
   tracehead = trace.prev;
   return;
 }
 void parser_prod___ATopClassdef___replace_child(val_t  self, val_t  param0, val_t  param1) {
-  struct trace_t trace = {NULL, "parser_prod::ATopClassdef::replace_child (src/parser//parser_prod.nit:957,5--969:22)"};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  val_t variable3;
-    val_t variable4;
-  trace.prev = tracehead; tracehead = &trace;
-  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*/) /*PNode::==*/)))))));
-  if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert failed: src/parser//parser_prod.nit:959,9--32\n"); 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[Int]*/
-  variable2 = variable3;
-  variable2 = ((range___Range___iterator_t)CALL(variable2,COLOR_abstract_collection___Collection___iterator))(variable2) /*Range::iterator*/;
+  struct trace_t trace = {NULL, NULL, 984, LOCATE_parser_prod___ATopClassdef___replace_child};
+  val_t variable[8];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Local variable */
+  variable[2] =  param1;
+  /* Register variable[3]: Method return value and escape marker */
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ATopClassdef___replace_child, LOCATE_parser_prod, 986); nit_exit(1);}
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___ATopClassdef____n_propdefs(variable[0]) /*ATopClassdef::_n_propdefs*/;
+  /* Register variable[4]: Result */
+  variable[4] = CALL_abstract_collection___Collection___length(variable[4])(variable[4]) /*List::length*/;
+  /* Register variable[4]: Result */
+  variable[4] = NEW_Range_range___Range___without_last( TAG_Int(0), variable[4]) /*new Range[Int]*/;
+  /* Register variable[4]: For iterator */
+  variable[4] = CALL_abstract_collection___Collection___iterator(variable[4])(variable[4]) /*Range::iterator*/;
   while (true) { /*for*/
-    variable3 = ((abstract_collection___Iterator___is_ok_t)CALL(variable2,COLOR_abstract_collection___Iterator___is_ok))(variable2) /*Iterator::is_ok*/;
-    if (!UNTAG_Bool(variable3)) break; /*for*/
-    variable3 = ((abstract_collection___Iterator___item_t)CALL(variable2,COLOR_abstract_collection___Iterator___item))(variable2) /*Iterator::item*/;
-    variable4 = ATTR_parser_nodes___ATopClassdef____n_propdefs( self) /*ATopClassdef::_n_propdefs*/;
-    variable4 = ((list___List_____bra_t)CALL(variable4,COLOR_abstract_collection___Map_____bra))(variable4,  variable3 /*i*/) /*List::[]*/;
-    variable4 = TAG_Bool((variable4 ==  variable0 /*old_child*/) || ((variable4 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable4,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable4, variable0 /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable4,COLOR_kernel___Object_____eqeq))(variable4,  variable0 /*old_child*/) /*PPropdef::==*/)))));
-    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*/) /*PNode::==*/)))))));
-      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 failed: src/parser//parser_prod.nit:963,7--35\n"); 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) /*PPropdef::parent=*/;
+    /* Register variable[5]: For 'is_ok' result */
+    variable[5] = CALL_abstract_collection___Iterator___is_ok(variable[4])(variable[4]) /*Iterator::is_ok*/;
+    if (!UNTAG_Bool(variable[5])) break; /*for*/
+    variable[5] = CALL_abstract_collection___Iterator___item(variable[4])(variable[4]) /*Iterator::item*/ /* Ensure var: For item*/;
+    /* Register variable[6]: Local variable */
+    variable[6] = variable[5];
+    /* Register variable[7]: Result */
+    variable[7] = ATTR_parser_nodes___ATopClassdef____n_propdefs(variable[0]) /*ATopClassdef::_n_propdefs*/;
+    /* Register variable[7]: Result */
+    variable[7] = CALL_abstract_collection___MapRead_____bra(variable[7])(variable[7],  variable[6] /*i*/) /*List::[]*/;
+    /* Register variable[7]: Result */
+    variable[7] = TAG_Bool((variable[7] ==  variable[1] /*old_child*/) || ((variable[7] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[7])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[7], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[7])(variable[7],  variable[1] /*old_child*/) /*Object::==*/)))));
+    if (UNTAG_Bool(variable[7])) { /*if*/
+      /* Register variable[7]: Result */
+      variable[7] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+      if (UNTAG_Bool(variable[7])) { /*if*/
+        /* Register variable[7]: Result */
+        variable[7] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PPropdef, ID_PPropdef)) /*cast PPropdef*/;
+        if (!UNTAG_Bool(variable[7])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ATopClassdef___replace_child, LOCATE_parser_prod, 990); nit_exit(1);}
+        /* Register variable[7]: Result */
+        variable[7] = ATTR_parser_nodes___ATopClassdef____n_propdefs(variable[0]) /*ATopClassdef::_n_propdefs*/;
+        CALL_abstract_collection___Map_____braeq(variable[7])(variable[7],  variable[6] /*i*/,  variable[2] /*new_child*/) /*List::[]=*/;
+        CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*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*/;
+        /* Register variable[7]: Result */
+        variable[7] = ATTR_parser_nodes___ATopClassdef____n_propdefs(variable[0]) /*ATopClassdef::_n_propdefs*/;
+        CALL_abstract_collection___Map___remove_at(variable[7])(variable[7],  variable[6] /*i*/) /*List::remove_at*/;
       }
-      goto return_label95;
+      goto return_label111;
     }
-    continue_96: while(0);
-    ((abstract_collection___Iterator___next_t)CALL(variable2,COLOR_abstract_collection___Iterator___next))(variable2) /*Iterator::next*/;
+    continue_112: while(0);
+    CALL_abstract_collection___Iterator___next(variable[4])(variable[4]) /*Iterator::next*/;
   }
-  break_96: while(0);
-  return_label95: while(false);
+  break_112: while(0);
+  return_label111: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___ATopClassdef___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::ATopClassdef::visit_all (src/parser//parser_prod.nit:974,5--977:25)"};
-  val_t variable0;
-  val_t variable1;
-    val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  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*/;
+  struct trace_t trace = {NULL, NULL, 1001, LOCATE_parser_prod___ATopClassdef___visit_all};
+  val_t variable[6];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___ATopClassdef____n_propdefs(variable[0]) /*ATopClassdef::_n_propdefs*/;
+  /* Register variable[3]: For iterator */
+  variable[3] = CALL_abstract_collection___Collection___iterator(variable[3])(variable[3]) /*List::iterator*/;
   while (true) { /*for*/
-    variable2 = ((list___ListIterator___is_ok_t)CALL(variable1,COLOR_abstract_collection___Iterator___is_ok))(variable1) /*ListIterator::is_ok*/;
-    if (!UNTAG_Bool(variable2)) break; /*for*/
-    variable2 = ((list___ListIterator___item_t)CALL(variable1,COLOR_abstract_collection___Iterator___item))(variable1) /*ListIterator::item*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/,  variable2 /*n*/) /*Visitor::visit*/;
-    continue_98: while(0);
-    ((list___ListIterator___next_t)CALL(variable1,COLOR_abstract_collection___Iterator___next))(variable1) /*ListIterator::next*/;
-  }
-  break_98: while(0);
+    /* Register variable[4]: For 'is_ok' result */
+    variable[4] = CALL_abstract_collection___Iterator___is_ok(variable[3])(variable[3]) /*ListIterator::is_ok*/;
+    if (!UNTAG_Bool(variable[4])) break; /*for*/
+    variable[4] = CALL_abstract_collection___Iterator___item(variable[3])(variable[3]) /*ListIterator::item*/ /* Ensure var: For item*/;
+    /* Register variable[5]: Local variable */
+    variable[5] = variable[4];
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/,  variable[5] /*n*/) /*Visitor::visit*/;
+    continue_114: while(0);
+    CALL_abstract_collection___Iterator___next(variable[3])(variable[3]) /*ListIterator::next*/;
+  }
+  break_114: while(0);
+  return_label113: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___ATopClassdef___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::ATopClassdef::visit_all_reverse (src/parser//parser_prod.nit:981,5--987:11)"};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  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;
+  struct trace_t trace = {NULL, NULL, 1008, LOCATE_parser_prod___ATopClassdef___visit_all_reverse};
+  val_t variable[5];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  /* Register variable[3]: Local variable */
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___ATopClassdef____n_propdefs(variable[0]) /*ATopClassdef::_n_propdefs*/;
+  /* Register variable[4]: Result */
+  variable[4] = CALL_abstract_collection___Collection___length(variable[4])(variable[4]) /*List::length*/;
+  variable[3] = variable[4];
   while (true) { /*while*/
-    variable2 = TAG_Bool(UNTAG_Int( variable1 /*i*/)>=UNTAG_Int( TAG_Int(0)));
-    if (!UNTAG_Bool(variable2)) break; /* while*/
-    variable2 = ATTR_parser_nodes___ATopClassdef____n_propdefs( self) /*ATopClassdef::_n_propdefs*/;
-    variable2 = ((list___List_____bra_t)CALL(variable2,COLOR_abstract_collection___Map_____bra))(variable2,  variable1 /*i*/) /*List::[]*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable2) /*Visitor::visit*/;
-    variable2 = TAG_Int(UNTAG_Int( variable1 /*i*/)-UNTAG_Int( TAG_Int(1)));
-    variable1 = variable2 /*i=*/;
-    continue_100: while(0);
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(UNTAG_Int( variable[3] /*i*/)>=UNTAG_Int( TAG_Int(0)));
+    if (!UNTAG_Bool(variable[4])) break; /* while*/
+    /* Register variable[4]: Result */
+    variable[4] = ATTR_parser_nodes___ATopClassdef____n_propdefs(variable[0]) /*ATopClassdef::_n_propdefs*/;
+    /* Register variable[4]: Result */
+    variable[4] = CALL_abstract_collection___MapRead_____bra(variable[4])(variable[4],  variable[3] /*i*/) /*List::[]*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[4]) /*Visitor::visit*/;
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Int(UNTAG_Int( variable[3] /*i*/)-UNTAG_Int( TAG_Int(1)));
+    variable[3] = variable[4] /*i=*/;
+    continue_116: while(0);
   }
-  break_100: while(0);
+  break_116: while(0);
+  return_label115: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AMainClassdef___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, "parser_prod::AMainClassdef::empty_init (src/parser//parser_prod.nit:994,5--27)"};
+void parser_prod___ATopClassdef___empty_init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 969, LOCATE_parser_prod___ATopClassdef___empty_init};
+  val_t variable[2];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AMainClassdef].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AMainClassdef].i] = 1;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ATopClassdef].i]) return;
+  /* Register variable[1]: Method return value and escape marker */
+  return_label117: while(false);
+  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ATopClassdef].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AMainClassdef___init_amainclassdef(val_t  self, val_t  param0, int* init_table) {
-  struct trace_t trace = {NULL, "parser_prod::AMainClassdef::init_amainclassdef (src/parser//parser_prod.nit:996,5--1004:17)"};
-  val_t variable0;
-  val_t variable1;
-    val_t variable2;
-    val_t variable3;
-  trace.prev = tracehead; tracehead = &trace;
-  variable0 =  param0;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AMainClassdef].i]) return;
-  variable1 = NEW_list___List___init(); /*new List[PPropdef]*/
-  ATTR_parser_nodes___AMainClassdef____n_propdefs( self) /*AMainClassdef::_n_propdefs*/ = variable1;
-  variable1 = ((array___AbstractArray___iterator_t)CALL( variable0 /*n_propdefs*/,COLOR_abstract_collection___Collection___iterator))( variable0 /*n_propdefs*/) /*Array::iterator*/;
+void parser_prod___ATopClassdef___init_atopclassdef(val_t  self, val_t  param0, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 971, LOCATE_parser_prod___ATopClassdef___init_atopclassdef};
+  val_t variable[7];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ATopClassdef].i]) return;
+  /* Register variable[2]: Method return value and escape marker */
+  CALL_parser_prod___ATopClassdef___empty_init(variable[0])(variable[0], init_table /*YYY*/) /*ATopClassdef::empty_init*/;
+  /* Register variable[3]: Result */
+  variable[3] = NEW_List_list___List___init() /*new List[PPropdef]*/;
+  ATTR_parser_nodes___ATopClassdef____n_propdefs(variable[0]) /*ATopClassdef::_n_propdefs*/ = variable[3];
+  /* Register variable[3]: For iterator */
+  variable[3] = CALL_abstract_collection___Collection___iterator( variable[1] /*n_propdefs*/)( variable[1] /*n_propdefs*/) /*Collection::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 failed: src/parser//parser_prod.nit:1002,3--23\n"); 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*/) /*List::add*/;
-    ((parser_prod___PNode___parent__eq_t)CALL( variable2 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable2 /*n*/,  self) /*PPropdef::parent=*/;
-    continue_103: while(0);
-    ((array___ArrayIterator___next_t)CALL(variable1,COLOR_abstract_collection___Iterator___next))(variable1) /*ArrayIterator::next*/;
-  }
-  break_103: while(0);
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AMainClassdef].i] = 1;
+    /* Register variable[4]: For 'is_ok' result */
+    variable[4] = CALL_abstract_collection___Iterator___is_ok(variable[3])(variable[3]) /*Iterator::is_ok*/;
+    if (!UNTAG_Bool(variable[4])) break; /*for*/
+    variable[4] = CALL_abstract_collection___Iterator___item(variable[3])(variable[3]) /*Iterator::item*/ /* Ensure var: For item*/;
+    /* Register variable[5]: Local variable */
+    variable[5] = variable[4];
+    /* Register variable[6]: Result */
+    variable[6] = TAG_Bool(( variable[5] /*n*/==NIT_NULL) || VAL_ISA( variable[5] /*n*/, COLOR_PPropdef, ID_PPropdef)) /*cast PPropdef*/;
+    if (!UNTAG_Bool(variable[6])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ATopClassdef___init_atopclassdef, LOCATE_parser_prod, 978); nit_exit(1);}
+    /* Register variable[6]: Result */
+    variable[6] = ATTR_parser_nodes___ATopClassdef____n_propdefs(variable[0]) /*ATopClassdef::_n_propdefs*/;
+    CALL_abstract_collection___SimpleCollection___add(variable[6])(variable[6],  variable[5] /*n*/) /*IndexedCollection::add*/;
+    CALL_parser_prod___PNode___parent__eq( variable[5] /*n*/)( variable[5] /*n*/, variable[0]) /*PNode::parent=*/;
+    continue_119: while(0);
+    CALL_abstract_collection___Iterator___next(variable[3])(variable[3]) /*Iterator::next*/;
+  }
+  break_119: while(0);
+  return_label118: while(false);
+  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ATopClassdef].i] = 1;
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AMainClassdef___replace_child(val_t  self, val_t  param0, val_t  param1) {
-  struct trace_t trace = {NULL, "parser_prod::AMainClassdef::replace_child (src/parser//parser_prod.nit:1008,5--1020:22)"};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  val_t variable3;
-    val_t variable4;
-  trace.prev = tracehead; tracehead = &trace;
-  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*/) /*PNode::==*/)))))));
-  if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert failed: src/parser//parser_prod.nit:1010,9--32\n"); 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[Int]*/
-  variable2 = variable3;
-  variable2 = ((range___Range___iterator_t)CALL(variable2,COLOR_abstract_collection___Collection___iterator))(variable2) /*Range::iterator*/;
+  struct trace_t trace = {NULL, NULL, 1036, LOCATE_parser_prod___AMainClassdef___replace_child};
+  val_t variable[8];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Local variable */
+  variable[2] =  param1;
+  /* Register variable[3]: Method return value and escape marker */
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AMainClassdef___replace_child, LOCATE_parser_prod, 1038); nit_exit(1);}
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___AMainClassdef____n_propdefs(variable[0]) /*AMainClassdef::_n_propdefs*/;
+  /* Register variable[4]: Result */
+  variable[4] = CALL_abstract_collection___Collection___length(variable[4])(variable[4]) /*List::length*/;
+  /* Register variable[4]: Result */
+  variable[4] = NEW_Range_range___Range___without_last( TAG_Int(0), variable[4]) /*new Range[Int]*/;
+  /* Register variable[4]: For iterator */
+  variable[4] = CALL_abstract_collection___Collection___iterator(variable[4])(variable[4]) /*Range::iterator*/;
   while (true) { /*for*/
-    variable3 = ((abstract_collection___Iterator___is_ok_t)CALL(variable2,COLOR_abstract_collection___Iterator___is_ok))(variable2) /*Iterator::is_ok*/;
-    if (!UNTAG_Bool(variable3)) break; /*for*/
-    variable3 = ((abstract_collection___Iterator___item_t)CALL(variable2,COLOR_abstract_collection___Iterator___item))(variable2) /*Iterator::item*/;
-    variable4 = ATTR_parser_nodes___AMainClassdef____n_propdefs( self) /*AMainClassdef::_n_propdefs*/;
-    variable4 = ((list___List_____bra_t)CALL(variable4,COLOR_abstract_collection___Map_____bra))(variable4,  variable3 /*i*/) /*List::[]*/;
-    variable4 = TAG_Bool((variable4 ==  variable0 /*old_child*/) || ((variable4 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable4,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable4, variable0 /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable4,COLOR_kernel___Object_____eqeq))(variable4,  variable0 /*old_child*/) /*PPropdef::==*/)))));
-    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*/) /*PNode::==*/)))))));
-      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 failed: src/parser//parser_prod.nit:1014,7--35\n"); 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) /*PPropdef::parent=*/;
+    /* Register variable[5]: For 'is_ok' result */
+    variable[5] = CALL_abstract_collection___Iterator___is_ok(variable[4])(variable[4]) /*Iterator::is_ok*/;
+    if (!UNTAG_Bool(variable[5])) break; /*for*/
+    variable[5] = CALL_abstract_collection___Iterator___item(variable[4])(variable[4]) /*Iterator::item*/ /* Ensure var: For item*/;
+    /* Register variable[6]: Local variable */
+    variable[6] = variable[5];
+    /* Register variable[7]: Result */
+    variable[7] = ATTR_parser_nodes___AMainClassdef____n_propdefs(variable[0]) /*AMainClassdef::_n_propdefs*/;
+    /* Register variable[7]: Result */
+    variable[7] = CALL_abstract_collection___MapRead_____bra(variable[7])(variable[7],  variable[6] /*i*/) /*List::[]*/;
+    /* Register variable[7]: Result */
+    variable[7] = TAG_Bool((variable[7] ==  variable[1] /*old_child*/) || ((variable[7] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[7])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[7], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[7])(variable[7],  variable[1] /*old_child*/) /*Object::==*/)))));
+    if (UNTAG_Bool(variable[7])) { /*if*/
+      /* Register variable[7]: Result */
+      variable[7] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+      if (UNTAG_Bool(variable[7])) { /*if*/
+        /* Register variable[7]: Result */
+        variable[7] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PPropdef, ID_PPropdef)) /*cast PPropdef*/;
+        if (!UNTAG_Bool(variable[7])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AMainClassdef___replace_child, LOCATE_parser_prod, 1042); nit_exit(1);}
+        /* Register variable[7]: Result */
+        variable[7] = ATTR_parser_nodes___AMainClassdef____n_propdefs(variable[0]) /*AMainClassdef::_n_propdefs*/;
+        CALL_abstract_collection___Map_____braeq(variable[7])(variable[7],  variable[6] /*i*/,  variable[2] /*new_child*/) /*List::[]=*/;
+        CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*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*/;
+        /* Register variable[7]: Result */
+        variable[7] = ATTR_parser_nodes___AMainClassdef____n_propdefs(variable[0]) /*AMainClassdef::_n_propdefs*/;
+        CALL_abstract_collection___Map___remove_at(variable[7])(variable[7],  variable[6] /*i*/) /*List::remove_at*/;
       }
-      goto return_label104;
+      goto return_label120;
     }
-    continue_105: while(0);
-    ((abstract_collection___Iterator___next_t)CALL(variable2,COLOR_abstract_collection___Iterator___next))(variable2) /*Iterator::next*/;
+    continue_121: while(0);
+    CALL_abstract_collection___Iterator___next(variable[4])(variable[4]) /*Iterator::next*/;
   }
-  break_105: while(0);
-  return_label104: while(false);
+  break_121: while(0);
+  return_label120: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AMainClassdef___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AMainClassdef::visit_all (src/parser//parser_prod.nit:1025,5--1028:25)"};
-  val_t variable0;
-  val_t variable1;
-    val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  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*/;
+  struct trace_t trace = {NULL, NULL, 1053, LOCATE_parser_prod___AMainClassdef___visit_all};
+  val_t variable[6];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AMainClassdef____n_propdefs(variable[0]) /*AMainClassdef::_n_propdefs*/;
+  /* Register variable[3]: For iterator */
+  variable[3] = CALL_abstract_collection___Collection___iterator(variable[3])(variable[3]) /*List::iterator*/;
   while (true) { /*for*/
-    variable2 = ((list___ListIterator___is_ok_t)CALL(variable1,COLOR_abstract_collection___Iterator___is_ok))(variable1) /*ListIterator::is_ok*/;
-    if (!UNTAG_Bool(variable2)) break; /*for*/
-    variable2 = ((list___ListIterator___item_t)CALL(variable1,COLOR_abstract_collection___Iterator___item))(variable1) /*ListIterator::item*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/,  variable2 /*n*/) /*Visitor::visit*/;
-    continue_107: while(0);
-    ((list___ListIterator___next_t)CALL(variable1,COLOR_abstract_collection___Iterator___next))(variable1) /*ListIterator::next*/;
+    /* Register variable[4]: For 'is_ok' result */
+    variable[4] = CALL_abstract_collection___Iterator___is_ok(variable[3])(variable[3]) /*ListIterator::is_ok*/;
+    if (!UNTAG_Bool(variable[4])) break; /*for*/
+    variable[4] = CALL_abstract_collection___Iterator___item(variable[3])(variable[3]) /*ListIterator::item*/ /* Ensure var: For item*/;
+    /* Register variable[5]: Local variable */
+    variable[5] = variable[4];
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/,  variable[5] /*n*/) /*Visitor::visit*/;
+    continue_123: while(0);
+    CALL_abstract_collection___Iterator___next(variable[3])(variable[3]) /*ListIterator::next*/;
   }
-  break_107: while(0);
+  break_123: while(0);
+  return_label122: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AMainClassdef___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AMainClassdef::visit_all_reverse (src/parser//parser_prod.nit:1032,5--1038:11)"};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  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;
+  struct trace_t trace = {NULL, NULL, 1060, LOCATE_parser_prod___AMainClassdef___visit_all_reverse};
+  val_t variable[5];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  /* Register variable[3]: Local variable */
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___AMainClassdef____n_propdefs(variable[0]) /*AMainClassdef::_n_propdefs*/;
+  /* Register variable[4]: Result */
+  variable[4] = CALL_abstract_collection___Collection___length(variable[4])(variable[4]) /*List::length*/;
+  variable[3] = variable[4];
   while (true) { /*while*/
-    variable2 = TAG_Bool(UNTAG_Int( variable1 /*i*/)>=UNTAG_Int( TAG_Int(0)));
-    if (!UNTAG_Bool(variable2)) break; /* while*/
-    variable2 = ATTR_parser_nodes___AMainClassdef____n_propdefs( self) /*AMainClassdef::_n_propdefs*/;
-    variable2 = ((list___List_____bra_t)CALL(variable2,COLOR_abstract_collection___Map_____bra))(variable2,  variable1 /*i*/) /*List::[]*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable2) /*Visitor::visit*/;
-    variable2 = TAG_Int(UNTAG_Int( variable1 /*i*/)-UNTAG_Int( TAG_Int(1)));
-    variable1 = variable2 /*i=*/;
-    continue_109: while(0);
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(UNTAG_Int( variable[3] /*i*/)>=UNTAG_Int( TAG_Int(0)));
+    if (!UNTAG_Bool(variable[4])) break; /* while*/
+    /* Register variable[4]: Result */
+    variable[4] = ATTR_parser_nodes___AMainClassdef____n_propdefs(variable[0]) /*AMainClassdef::_n_propdefs*/;
+    /* Register variable[4]: Result */
+    variable[4] = CALL_abstract_collection___MapRead_____bra(variable[4])(variable[4],  variable[3] /*i*/) /*List::[]*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[4]) /*Visitor::visit*/;
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Int(UNTAG_Int( variable[3] /*i*/)-UNTAG_Int( TAG_Int(1)));
+    variable[3] = variable[4] /*i=*/;
+    continue_125: while(0);
   }
-  break_109: while(0);
+  break_125: while(0);
+  return_label124: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AConcreteClasskind___n_kwclass__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AConcreteClasskind::n_kwclass= (src/parser//parser_prod.nit:1044,5--1048:20)"};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  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*/) /*TKwclass::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*TKwclass::parent=*/;
-  }
+void parser_prod___AMainClassdef___empty_init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 1021, LOCATE_parser_prod___AMainClassdef___empty_init};
+  val_t variable[2];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AMainClassdef].i]) return;
+  /* Register variable[1]: Method return value and escape marker */
+  return_label126: while(false);
+  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AMainClassdef].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AConcreteClasskind___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, "parser_prod::AConcreteClasskind::empty_init (src/parser//parser_prod.nit:1052,5--27)"};
-  trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AConcreteClasskind].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AConcreteClasskind].i] = 1;
+void parser_prod___AMainClassdef___init_amainclassdef(val_t  self, val_t  param0, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 1023, LOCATE_parser_prod___AMainClassdef___init_amainclassdef};
+  val_t variable[7];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AMainClassdef].i]) return;
+  /* Register variable[2]: Method return value and escape marker */
+  CALL_parser_prod___AMainClassdef___empty_init(variable[0])(variable[0], init_table /*YYY*/) /*AMainClassdef::empty_init*/;
+  /* Register variable[3]: Result */
+  variable[3] = NEW_List_list___List___init() /*new List[PPropdef]*/;
+  ATTR_parser_nodes___AMainClassdef____n_propdefs(variable[0]) /*AMainClassdef::_n_propdefs*/ = variable[3];
+  /* Register variable[3]: For iterator */
+  variable[3] = CALL_abstract_collection___Collection___iterator( variable[1] /*n_propdefs*/)( variable[1] /*n_propdefs*/) /*Collection::iterator*/;
+  while (true) { /*for*/
+    /* Register variable[4]: For 'is_ok' result */
+    variable[4] = CALL_abstract_collection___Iterator___is_ok(variable[3])(variable[3]) /*Iterator::is_ok*/;
+    if (!UNTAG_Bool(variable[4])) break; /*for*/
+    variable[4] = CALL_abstract_collection___Iterator___item(variable[3])(variable[3]) /*Iterator::item*/ /* Ensure var: For item*/;
+    /* Register variable[5]: Local variable */
+    variable[5] = variable[4];
+    /* Register variable[6]: Result */
+    variable[6] = TAG_Bool(( variable[5] /*n*/==NIT_NULL) || VAL_ISA( variable[5] /*n*/, COLOR_PPropdef, ID_PPropdef)) /*cast PPropdef*/;
+    if (!UNTAG_Bool(variable[6])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AMainClassdef___init_amainclassdef, LOCATE_parser_prod, 1030); nit_exit(1);}
+    /* Register variable[6]: Result */
+    variable[6] = ATTR_parser_nodes___AMainClassdef____n_propdefs(variable[0]) /*AMainClassdef::_n_propdefs*/;
+    CALL_abstract_collection___SimpleCollection___add(variable[6])(variable[6],  variable[5] /*n*/) /*IndexedCollection::add*/;
+    CALL_parser_prod___PNode___parent__eq( variable[5] /*n*/)( variable[5] /*n*/, variable[0]) /*PNode::parent=*/;
+    continue_128: while(0);
+    CALL_abstract_collection___Iterator___next(variable[3])(variable[3]) /*Iterator::next*/;
+  }
+  break_128: while(0);
+  return_label127: while(false);
+  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AMainClassdef].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AConcreteClasskind___init_aconcreteclasskind(val_t  self, val_t  param0, int* init_table) {
-  struct trace_t trace = {NULL, "parser_prod::AConcreteClasskind::init_aconcreteclasskind (src/parser//parser_prod.nit:1054,5--1060:25)"};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___AConcreteClasskind___n_kwclass__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 1072, LOCATE_parser_prod___AConcreteClasskind___n_kwclass__eq};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  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*/) /*TKwclass::==*/)))))));
-  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) /*TKwclass::parent=*/;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  ATTR_parser_nodes___AConcreteClasskind____n_kwclass(variable[0]) /*AConcreteClasskind::_n_kwclass*/ =  variable[1] /*n*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[0]) /*PNode::parent=*/;
   }
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AConcreteClasskind].i] = 1;
+  return_label129: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AConcreteClasskind___replace_child(val_t  self, val_t  param0, val_t  param1) {
-  struct trace_t trace = {NULL, "parser_prod::AConcreteClasskind::replace_child (src/parser//parser_prod.nit:1064,5--1075:18)"};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  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*/) /*PNode::==*/)))))));
-  if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert failed: src/parser//parser_prod.nit:1066,9--32\n"); 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*/) /*TKwclass::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*PNode::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_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 failed: src/parser//parser_prod.nit:1070,3--31\n"); 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_label113;
+  struct trace_t trace = {NULL, NULL, 1093, LOCATE_parser_prod___AConcreteClasskind___replace_child};
+  val_t variable[5];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Local variable */
+  variable[2] =  param1;
+  /* Register variable[3]: Method return value and escape marker */
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AConcreteClasskind___replace_child, LOCATE_parser_prod, 1095); nit_exit(1);}
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___AConcreteClasskind____n_kwclass(variable[0]) /*AConcreteClasskind::_n_kwclass*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*PNode::parent=*/;
+      /* Register variable[4]: Result */
+      variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_TKwclass, ID_TKwclass)) /*cast TKwclass*/;
+      if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AConcreteClasskind___replace_child, LOCATE_parser_prod, 1099); nit_exit(1);}
+      ATTR_parser_nodes___AConcreteClasskind____n_kwclass(variable[0]) /*AConcreteClasskind::_n_kwclass*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      ATTR_parser_nodes___AConcreteClasskind____n_kwclass(variable[0]) /*AConcreteClasskind::_n_kwclass*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label130;
   }
-  return_label113: while(false);
+  return_label130: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AConcreteClasskind___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AConcreteClasskind::visit_all (src/parser//parser_prod.nit:1079,5--1082:30)"};
-  val_t variable0;
-  val_t variable1;
+  struct trace_t trace = {NULL, NULL, 1108, LOCATE_parser_prod___AConcreteClasskind___visit_all};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  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*/) /*TKwclass::==*/)))))));
-  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*/;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AConcreteClasskind____n_kwclass(variable[0]) /*AConcreteClasskind::_n_kwclass*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AConcreteClasskind____n_kwclass(variable[0]) /*AConcreteClasskind::_n_kwclass*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
+  return_label131: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AConcreteClasskind___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AConcreteClasskind::visit_all_reverse (src/parser//parser_prod.nit:1086,5--1089:30)"};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  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*/) /*TKwclass::==*/)))))));
-  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*/;
+  struct trace_t trace = {NULL, NULL, 1115, LOCATE_parser_prod___AConcreteClasskind___visit_all_reverse};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AConcreteClasskind____n_kwclass(variable[0]) /*AConcreteClasskind::_n_kwclass*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AConcreteClasskind____n_kwclass(variable[0]) /*AConcreteClasskind::_n_kwclass*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
+  return_label132: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AAbstractClasskind___n_kwabstract__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AAbstractClasskind::n_kwabstract= (src/parser//parser_prod.nit:1094,5--1098:20)"};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___AConcreteClasskind___empty_init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 1080, LOCATE_parser_prod___AConcreteClasskind___empty_init};
+  val_t variable[2];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  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*/) /*TKwabstract::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*TKwabstract::parent=*/;
-  }
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AConcreteClasskind].i]) return;
+  /* Register variable[1]: Method return value and escape marker */
+  return_label133: while(false);
+  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AConcreteClasskind].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AAbstractClasskind___n_kwclass__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AAbstractClasskind::n_kwclass= (src/parser//parser_prod.nit:1101,5--1105:20)"};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___AConcreteClasskind___init_aconcreteclasskind(val_t  self, val_t  param0, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 1082, LOCATE_parser_prod___AConcreteClasskind___init_aconcreteclasskind};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  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*/) /*TKwclass::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*TKwclass::parent=*/;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AConcreteClasskind].i]) return;
+  /* Register variable[2]: Method return value and escape marker */
+  CALL_parser_prod___AConcreteClasskind___empty_init(variable[0])(variable[0], init_table /*YYY*/) /*AConcreteClasskind::empty_init*/;
+  ATTR_parser_nodes___AConcreteClasskind____n_kwclass(variable[0]) /*AConcreteClasskind::_n_kwclass*/ =  variable[1] /*n_kwclass*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_kwclass*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_kwclass*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n_kwclass*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_kwclass*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n_kwclass*/)( variable[1] /*n_kwclass*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n_kwclass*/)( variable[1] /*n_kwclass*/, variable[0]) /*PNode::parent=*/;
   }
+  return_label134: while(false);
+  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AConcreteClasskind].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AAbstractClasskind___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, "parser_prod::AAbstractClasskind::empty_init (src/parser//parser_prod.nit:1109,5--27)"};
+void parser_prod___AAbstractClasskind___n_kwabstract__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 1123, LOCATE_parser_prod___AAbstractClasskind___n_kwabstract__eq};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AAbstractClasskind].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AAbstractClasskind].i] = 1;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  ATTR_parser_nodes___AAbstractClasskind____n_kwabstract(variable[0]) /*AAbstractClasskind::_n_kwabstract*/ =  variable[1] /*n*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[0]) /*PNode::parent=*/;
+  }
+  return_label135: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AAbstractClasskind___init_aabstractclasskind(val_t  self, val_t  param0, val_t  param1, int* init_table) {
-  struct trace_t trace = {NULL, "parser_prod::AAbstractClasskind::init_aabstractclasskind (src/parser//parser_prod.nit:1111,5--1122:25)"};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
+void parser_prod___AAbstractClasskind___n_kwclass__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 1130, LOCATE_parser_prod___AAbstractClasskind___n_kwclass__eq};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  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*/) /*TKwabstract::==*/)))))));
-  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) /*TKwabstract::parent=*/;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  ATTR_parser_nodes___AAbstractClasskind____n_kwclass(variable[0]) /*AAbstractClasskind::_n_kwclass*/ =  variable[1] /*n*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[0]) /*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*/) /*TKwclass::==*/)))))));
-  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) /*TKwclass::parent=*/;
-  }
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AAbstractClasskind].i] = 1;
+  return_label136: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AAbstractClasskind___replace_child(val_t  self, val_t  param0, val_t  param1) {
-  struct trace_t trace = {NULL, "parser_prod::AAbstractClasskind::replace_child (src/parser//parser_prod.nit:1126,5--1147:18)"};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  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*/) /*PNode::==*/)))))));
-  if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert failed: src/parser//parser_prod.nit:1128,9--32\n"); 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*/) /*TKwabstract::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*PNode::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_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 failed: src/parser//parser_prod.nit:1132,3--34\n"); 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_label120;
-  }
-  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*/) /*TKwclass::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*PNode::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_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 failed: src/parser//parser_prod.nit:1142,3--31\n"); 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_label120;
+  struct trace_t trace = {NULL, NULL, 1156, LOCATE_parser_prod___AAbstractClasskind___replace_child};
+  val_t variable[5];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Local variable */
+  variable[2] =  param1;
+  /* Register variable[3]: Method return value and escape marker */
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AAbstractClasskind___replace_child, LOCATE_parser_prod, 1158); nit_exit(1);}
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___AAbstractClasskind____n_kwabstract(variable[0]) /*AAbstractClasskind::_n_kwabstract*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*PNode::parent=*/;
+      /* Register variable[4]: Result */
+      variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_TKwabstract, ID_TKwabstract)) /*cast TKwabstract*/;
+      if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AAbstractClasskind___replace_child, LOCATE_parser_prod, 1162); nit_exit(1);}
+      ATTR_parser_nodes___AAbstractClasskind____n_kwabstract(variable[0]) /*AAbstractClasskind::_n_kwabstract*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      ATTR_parser_nodes___AAbstractClasskind____n_kwabstract(variable[0]) /*AAbstractClasskind::_n_kwabstract*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label137;
+  }
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___AAbstractClasskind____n_kwclass(variable[0]) /*AAbstractClasskind::_n_kwclass*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*PNode::parent=*/;
+      /* Register variable[4]: Result */
+      variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_TKwclass, ID_TKwclass)) /*cast TKwclass*/;
+      if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AAbstractClasskind___replace_child, LOCATE_parser_prod, 1172); nit_exit(1);}
+      ATTR_parser_nodes___AAbstractClasskind____n_kwclass(variable[0]) /*AAbstractClasskind::_n_kwclass*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      ATTR_parser_nodes___AAbstractClasskind____n_kwclass(variable[0]) /*AAbstractClasskind::_n_kwclass*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label137;
   }
-  return_label120: while(false);
+  return_label137: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AAbstractClasskind___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AAbstractClasskind::visit_all (src/parser//parser_prod.nit:1151,5--1157:30)"};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  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*/) /*TKwabstract::==*/)))))));
-  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*/) /*TKwclass::==*/)))))));
-  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*/;
-  }
+  struct trace_t trace = {NULL, NULL, 1181, LOCATE_parser_prod___AAbstractClasskind___visit_all};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AAbstractClasskind____n_kwabstract(variable[0]) /*AAbstractClasskind::_n_kwabstract*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AAbstractClasskind____n_kwabstract(variable[0]) /*AAbstractClasskind::_n_kwabstract*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AAbstractClasskind____n_kwclass(variable[0]) /*AAbstractClasskind::_n_kwclass*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AAbstractClasskind____n_kwclass(variable[0]) /*AAbstractClasskind::_n_kwclass*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  return_label138: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AAbstractClasskind___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AAbstractClasskind::visit_all_reverse (src/parser//parser_prod.nit:1161,5--1167:30)"};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  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*/) /*TKwabstract::==*/)))))));
-  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*/) /*TKwclass::==*/)))))));
-  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*/;
+  struct trace_t trace = {NULL, NULL, 1191, LOCATE_parser_prod___AAbstractClasskind___visit_all_reverse};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AAbstractClasskind____n_kwabstract(variable[0]) /*AAbstractClasskind::_n_kwabstract*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AAbstractClasskind____n_kwabstract(variable[0]) /*AAbstractClasskind::_n_kwabstract*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AAbstractClasskind____n_kwclass(variable[0]) /*AAbstractClasskind::_n_kwclass*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AAbstractClasskind____n_kwclass(variable[0]) /*AAbstractClasskind::_n_kwclass*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
+  return_label139: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AInterfaceClasskind___n_kwinterface__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AInterfaceClasskind::n_kwinterface= (src/parser//parser_prod.nit:1172,5--1176:20)"};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___AAbstractClasskind___empty_init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 1138, LOCATE_parser_prod___AAbstractClasskind___empty_init};
+  val_t variable[2];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  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*/) /*TKwinterface::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*TKwinterface::parent=*/;
-  }
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AAbstractClasskind].i]) return;
+  /* Register variable[1]: Method return value and escape marker */
+  return_label140: while(false);
+  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AAbstractClasskind].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AInterfaceClasskind___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, "parser_prod::AInterfaceClasskind::empty_init (src/parser//parser_prod.nit:1180,5--27)"};
-  trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AInterfaceClasskind].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AInterfaceClasskind].i] = 1;
+void parser_prod___AAbstractClasskind___init_aabstractclasskind(val_t  self, val_t  param0, val_t  param1, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 1140, LOCATE_parser_prod___AAbstractClasskind___init_aabstractclasskind};
+  val_t variable[5];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Local variable */
+  variable[2] =  param1;
+  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AAbstractClasskind].i]) return;
+  /* Register variable[3]: Method return value and escape marker */
+  CALL_parser_prod___AAbstractClasskind___empty_init(variable[0])(variable[0], init_table /*YYY*/) /*AAbstractClasskind::empty_init*/;
+  ATTR_parser_nodes___AAbstractClasskind____n_kwabstract(variable[0]) /*AAbstractClasskind::_n_kwabstract*/ =  variable[1] /*n_kwabstract*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_kwabstract*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_kwabstract*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n_kwabstract*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_kwabstract*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n_kwabstract*/)( variable[1] /*n_kwabstract*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n_kwabstract*/)( variable[1] /*n_kwabstract*/, variable[0]) /*PNode::parent=*/;
+  }
+  ATTR_parser_nodes___AAbstractClasskind____n_kwclass(variable[0]) /*AAbstractClasskind::_n_kwclass*/ =  variable[2] /*n_kwclass*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*n_kwclass*/ ==  NIT_NULL /*null*/) || (( variable[2] /*n_kwclass*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*n_kwclass*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*n_kwclass*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*n_kwclass*/)( variable[2] /*n_kwclass*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[2] /*n_kwclass*/)( variable[2] /*n_kwclass*/, variable[0]) /*PNode::parent=*/;
+  }
+  return_label141: while(false);
+  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AAbstractClasskind].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AInterfaceClasskind___init_ainterfaceclasskind(val_t  self, val_t  param0, int* init_table) {
-  struct trace_t trace = {NULL, "parser_prod::AInterfaceClasskind::init_ainterfaceclasskind (src/parser//parser_prod.nit:1182,5--1188:29)"};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___AInterfaceClasskind___n_kwinterface__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 1202, LOCATE_parser_prod___AInterfaceClasskind___n_kwinterface__eq};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  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*/) /*TKwinterface::==*/)))))));
-  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) /*TKwinterface::parent=*/;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  ATTR_parser_nodes___AInterfaceClasskind____n_kwinterface(variable[0]) /*AInterfaceClasskind::_n_kwinterface*/ =  variable[1] /*n*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[0]) /*PNode::parent=*/;
   }
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AInterfaceClasskind].i] = 1;
+  return_label142: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AInterfaceClasskind___replace_child(val_t  self, val_t  param0, val_t  param1) {
-  struct trace_t trace = {NULL, "parser_prod::AInterfaceClasskind::replace_child (src/parser//parser_prod.nit:1192,5--1203:18)"};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  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*/) /*PNode::==*/)))))));
-  if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert failed: src/parser//parser_prod.nit:1194,9--32\n"); 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*/) /*TKwinterface::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*PNode::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_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 failed: src/parser//parser_prod.nit:1198,3--35\n"); 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_label126;
+  struct trace_t trace = {NULL, NULL, 1223, LOCATE_parser_prod___AInterfaceClasskind___replace_child};
+  val_t variable[5];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Local variable */
+  variable[2] =  param1;
+  /* Register variable[3]: Method return value and escape marker */
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AInterfaceClasskind___replace_child, LOCATE_parser_prod, 1225); nit_exit(1);}
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___AInterfaceClasskind____n_kwinterface(variable[0]) /*AInterfaceClasskind::_n_kwinterface*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*PNode::parent=*/;
+      /* Register variable[4]: Result */
+      variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_TKwinterface, ID_TKwinterface)) /*cast TKwinterface*/;
+      if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AInterfaceClasskind___replace_child, LOCATE_parser_prod, 1229); nit_exit(1);}
+      ATTR_parser_nodes___AInterfaceClasskind____n_kwinterface(variable[0]) /*AInterfaceClasskind::_n_kwinterface*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      ATTR_parser_nodes___AInterfaceClasskind____n_kwinterface(variable[0]) /*AInterfaceClasskind::_n_kwinterface*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label143;
   }
-  return_label126: while(false);
+  return_label143: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AInterfaceClasskind___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AInterfaceClasskind::visit_all (src/parser//parser_prod.nit:1207,5--1210:34)"};
-  val_t variable0;
-  val_t variable1;
+  struct trace_t trace = {NULL, NULL, 1238, LOCATE_parser_prod___AInterfaceClasskind___visit_all};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  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*/) /*TKwinterface::==*/)))))));
-  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*/;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AInterfaceClasskind____n_kwinterface(variable[0]) /*AInterfaceClasskind::_n_kwinterface*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AInterfaceClasskind____n_kwinterface(variable[0]) /*AInterfaceClasskind::_n_kwinterface*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
+  return_label144: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AInterfaceClasskind___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AInterfaceClasskind::visit_all_reverse (src/parser//parser_prod.nit:1214,5--1217:34)"};
-  val_t variable0;
-  val_t variable1;
+  struct trace_t trace = {NULL, NULL, 1245, LOCATE_parser_prod___AInterfaceClasskind___visit_all_reverse};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  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*/) /*TKwinterface::==*/)))))));
-  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*/;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AInterfaceClasskind____n_kwinterface(variable[0]) /*AInterfaceClasskind::_n_kwinterface*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AInterfaceClasskind____n_kwinterface(variable[0]) /*AInterfaceClasskind::_n_kwinterface*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
+  return_label145: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AUniversalClasskind___n_kwuniversal__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AUniversalClasskind::n_kwuniversal= (src/parser//parser_prod.nit:1222,5--1226:20)"};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  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*/) /*TKwuniversal::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*TKwuniversal::parent=*/;
-  }
+void parser_prod___AInterfaceClasskind___empty_init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 1210, LOCATE_parser_prod___AInterfaceClasskind___empty_init};
+  val_t variable[2];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AInterfaceClasskind].i]) return;
+  /* Register variable[1]: Method return value and escape marker */
+  return_label146: while(false);
+  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AInterfaceClasskind].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AUniversalClasskind___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, "parser_prod::AUniversalClasskind::empty_init (src/parser//parser_prod.nit:1230,5--27)"};
+void parser_prod___AInterfaceClasskind___init_ainterfaceclasskind(val_t  self, val_t  param0, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 1212, LOCATE_parser_prod___AInterfaceClasskind___init_ainterfaceclasskind};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AUniversalClasskind].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AUniversalClasskind].i] = 1;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AInterfaceClasskind].i]) return;
+  /* Register variable[2]: Method return value and escape marker */
+  CALL_parser_prod___AInterfaceClasskind___empty_init(variable[0])(variable[0], init_table /*YYY*/) /*AInterfaceClasskind::empty_init*/;
+  ATTR_parser_nodes___AInterfaceClasskind____n_kwinterface(variable[0]) /*AInterfaceClasskind::_n_kwinterface*/ =  variable[1] /*n_kwinterface*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_kwinterface*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_kwinterface*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n_kwinterface*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_kwinterface*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n_kwinterface*/)( variable[1] /*n_kwinterface*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n_kwinterface*/)( variable[1] /*n_kwinterface*/, variable[0]) /*PNode::parent=*/;
+  }
+  return_label147: while(false);
+  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AInterfaceClasskind].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AUniversalClasskind___init_auniversalclasskind(val_t  self, val_t  param0, int* init_table) {
-  struct trace_t trace = {NULL, "parser_prod::AUniversalClasskind::init_auniversalclasskind (src/parser//parser_prod.nit:1232,5--1238:29)"};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___AUniversalClasskind___n_kwuniversal__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 1253, LOCATE_parser_prod___AUniversalClasskind___n_kwuniversal__eq};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  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*/) /*TKwuniversal::==*/)))))));
-  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) /*TKwuniversal::parent=*/;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  ATTR_parser_nodes___AUniversalClasskind____n_kwuniversal(variable[0]) /*AUniversalClasskind::_n_kwuniversal*/ =  variable[1] /*n*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[0]) /*PNode::parent=*/;
   }
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AUniversalClasskind].i] = 1;
+  return_label148: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AUniversalClasskind___replace_child(val_t  self, val_t  param0, val_t  param1) {
-  struct trace_t trace = {NULL, "parser_prod::AUniversalClasskind::replace_child (src/parser//parser_prod.nit:1242,5--1253:18)"};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  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*/) /*PNode::==*/)))))));
-  if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert failed: src/parser//parser_prod.nit:1244,9--32\n"); 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*/) /*TKwuniversal::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*PNode::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_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 failed: src/parser//parser_prod.nit:1248,3--35\n"); 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_label132;
+  struct trace_t trace = {NULL, NULL, 1274, LOCATE_parser_prod___AUniversalClasskind___replace_child};
+  val_t variable[5];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Local variable */
+  variable[2] =  param1;
+  /* Register variable[3]: Method return value and escape marker */
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AUniversalClasskind___replace_child, LOCATE_parser_prod, 1276); nit_exit(1);}
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___AUniversalClasskind____n_kwuniversal(variable[0]) /*AUniversalClasskind::_n_kwuniversal*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*PNode::parent=*/;
+      /* Register variable[4]: Result */
+      variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_TKwuniversal, ID_TKwuniversal)) /*cast TKwuniversal*/;
+      if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AUniversalClasskind___replace_child, LOCATE_parser_prod, 1280); nit_exit(1);}
+      ATTR_parser_nodes___AUniversalClasskind____n_kwuniversal(variable[0]) /*AUniversalClasskind::_n_kwuniversal*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      ATTR_parser_nodes___AUniversalClasskind____n_kwuniversal(variable[0]) /*AUniversalClasskind::_n_kwuniversal*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label149;
   }
-  return_label132: while(false);
+  return_label149: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AUniversalClasskind___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AUniversalClasskind::visit_all (src/parser//parser_prod.nit:1257,5--1260:34)"};
-  val_t variable0;
-  val_t variable1;
+  struct trace_t trace = {NULL, NULL, 1289, LOCATE_parser_prod___AUniversalClasskind___visit_all};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  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*/) /*TKwuniversal::==*/)))))));
-  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*/;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AUniversalClasskind____n_kwuniversal(variable[0]) /*AUniversalClasskind::_n_kwuniversal*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AUniversalClasskind____n_kwuniversal(variable[0]) /*AUniversalClasskind::_n_kwuniversal*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
+  return_label150: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AUniversalClasskind___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AUniversalClasskind::visit_all_reverse (src/parser//parser_prod.nit:1264,5--1267:34)"};
-  val_t variable0;
-  val_t variable1;
+  struct trace_t trace = {NULL, NULL, 1296, LOCATE_parser_prod___AUniversalClasskind___visit_all_reverse};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  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*/) /*TKwuniversal::==*/)))))));
-  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*/;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AUniversalClasskind____n_kwuniversal(variable[0]) /*AUniversalClasskind::_n_kwuniversal*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AUniversalClasskind____n_kwuniversal(variable[0]) /*AUniversalClasskind::_n_kwuniversal*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
+  return_label151: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AFormaldef___n_id__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AFormaldef::n_id= (src/parser//parser_prod.nit:1272,5--1276:20)"};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___AUniversalClasskind___empty_init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 1261, LOCATE_parser_prod___AUniversalClasskind___empty_init};
+  val_t variable[2];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  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*/) /*TClassid::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*TClassid::parent=*/;
-  }
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AUniversalClasskind].i]) return;
+  /* Register variable[1]: Method return value and escape marker */
+  return_label152: while(false);
+  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AUniversalClasskind].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AFormaldef___n_type__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AFormaldef::n_type= (src/parser//parser_prod.nit:1279,5--1283:20)"};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___AUniversalClasskind___init_auniversalclasskind(val_t  self, val_t  param0, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 1263, LOCATE_parser_prod___AUniversalClasskind___init_auniversalclasskind};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  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*/) /*PType::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PType::parent=*/;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AUniversalClasskind].i]) return;
+  /* Register variable[2]: Method return value and escape marker */
+  CALL_parser_prod___AUniversalClasskind___empty_init(variable[0])(variable[0], init_table /*YYY*/) /*AUniversalClasskind::empty_init*/;
+  ATTR_parser_nodes___AUniversalClasskind____n_kwuniversal(variable[0]) /*AUniversalClasskind::_n_kwuniversal*/ =  variable[1] /*n_kwuniversal*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_kwuniversal*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_kwuniversal*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n_kwuniversal*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_kwuniversal*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n_kwuniversal*/)( variable[1] /*n_kwuniversal*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n_kwuniversal*/)( variable[1] /*n_kwuniversal*/, variable[0]) /*PNode::parent=*/;
   }
+  return_label153: while(false);
+  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AUniversalClasskind].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AFormaldef___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, "parser_prod::AFormaldef::empty_init (src/parser//parser_prod.nit:1287,5--27)"};
+void parser_prod___AFormaldef___n_id__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 1304, LOCATE_parser_prod___AFormaldef___n_id__eq};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AFormaldef].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AFormaldef].i] = 1;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  ATTR_parser_nodes___AFormaldef____n_id(variable[0]) /*AFormaldef::_n_id*/ =  variable[1] /*n*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[0]) /*PNode::parent=*/;
+  }
+  return_label154: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AFormaldef___init_aformaldef(val_t  self, val_t  param0, val_t  param1, int* init_table) {
-  struct trace_t trace = {NULL, "parser_prod::AFormaldef::init_aformaldef (src/parser//parser_prod.nit:1289,5--1300:22)"};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
+void parser_prod___AFormaldef___n_type__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 1311, LOCATE_parser_prod___AFormaldef___n_type__eq};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  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*/) /*TClassid::==*/)))))));
-  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) /*TClassid::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*/) /*PType::==*/)))))));
-  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) /*PType::parent=*/;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  ATTR_parser_nodes___AFormaldef____n_type(variable[0]) /*AFormaldef::_n_type*/ =  variable[1] /*n*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[0]) /*PNode::parent=*/;
   }
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AFormaldef].i] = 1;
+  return_label155: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AFormaldef___replace_child(val_t  self, val_t  param0, val_t  param1) {
-  struct trace_t trace = {NULL, "parser_prod::AFormaldef::replace_child (src/parser//parser_prod.nit:1304,5--1325:18)"};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  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*/) /*PNode::==*/)))))));
-  if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert failed: src/parser//parser_prod.nit:1306,9--32\n"); 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*/) /*TClassid::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*PNode::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_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 failed: src/parser//parser_prod.nit:1310,3--31\n"); 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_label139;
-  }
-  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*/) /*PType::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*PNode::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_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 failed: src/parser//parser_prod.nit:1320,3--28\n"); 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_label139;
+  struct trace_t trace = {NULL, NULL, 1337, LOCATE_parser_prod___AFormaldef___replace_child};
+  val_t variable[5];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Local variable */
+  variable[2] =  param1;
+  /* Register variable[3]: Method return value and escape marker */
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AFormaldef___replace_child, LOCATE_parser_prod, 1339); nit_exit(1);}
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___AFormaldef____n_id(variable[0]) /*AFormaldef::_n_id*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*PNode::parent=*/;
+      /* Register variable[4]: Result */
+      variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_TClassid, ID_TClassid)) /*cast TClassid*/;
+      if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AFormaldef___replace_child, LOCATE_parser_prod, 1343); nit_exit(1);}
+      ATTR_parser_nodes___AFormaldef____n_id(variable[0]) /*AFormaldef::_n_id*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      ATTR_parser_nodes___AFormaldef____n_id(variable[0]) /*AFormaldef::_n_id*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label156;
+  }
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___AFormaldef____n_type(variable[0]) /*AFormaldef::_n_type*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*PNode::parent=*/;
+      /* Register variable[4]: Result */
+      variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PType, ID_PType)) /*cast PType*/;
+      if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AFormaldef___replace_child, LOCATE_parser_prod, 1353); nit_exit(1);}
+      ATTR_parser_nodes___AFormaldef____n_type(variable[0]) /*AFormaldef::_n_type*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      ATTR_parser_nodes___AFormaldef____n_type(variable[0]) /*AFormaldef::_n_type*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label156;
   }
-  return_label139: while(false);
+  return_label156: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AFormaldef___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AFormaldef::visit_all (src/parser//parser_prod.nit:1329,5--1335:27)"};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  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*/) /*TClassid::==*/)))))));
-  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*/) /*PType::==*/)))))));
-  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*/;
-  }
+  struct trace_t trace = {NULL, NULL, 1362, LOCATE_parser_prod___AFormaldef___visit_all};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AFormaldef____n_id(variable[0]) /*AFormaldef::_n_id*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AFormaldef____n_id(variable[0]) /*AFormaldef::_n_id*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AFormaldef____n_type(variable[0]) /*AFormaldef::_n_type*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AFormaldef____n_type(variable[0]) /*AFormaldef::_n_type*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  return_label157: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AFormaldef___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AFormaldef::visit_all_reverse (src/parser//parser_prod.nit:1339,5--1345:27)"};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  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*/) /*TClassid::==*/)))))));
-  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*/) /*PType::==*/)))))));
-  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*/;
-  }
+  struct trace_t trace = {NULL, NULL, 1372, LOCATE_parser_prod___AFormaldef___visit_all_reverse};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AFormaldef____n_id(variable[0]) /*AFormaldef::_n_id*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AFormaldef____n_id(variable[0]) /*AFormaldef::_n_id*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AFormaldef____n_type(variable[0]) /*AFormaldef::_n_type*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AFormaldef____n_type(variable[0]) /*AFormaldef::_n_type*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  return_label158: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___ASuperclass___n_kwspecial__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::ASuperclass::n_kwspecial= (src/parser//parser_prod.nit:1350,5--1354:20)"};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___AFormaldef___empty_init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 1319, LOCATE_parser_prod___AFormaldef___empty_init};
+  val_t variable[2];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  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*/) /*TKwspecial::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*TKwspecial::parent=*/;
-  }
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AFormaldef].i]) return;
+  /* Register variable[1]: Method return value and escape marker */
+  return_label159: while(false);
+  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AFormaldef].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser_prod___ASuperclass___n_type__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::ASuperclass::n_type= (src/parser//parser_prod.nit:1357,5--1361:20)"};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  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*/) /*PType::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PType::parent=*/;
+void parser_prod___AFormaldef___init_aformaldef(val_t  self, val_t  param0, val_t  param1, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 1321, LOCATE_parser_prod___AFormaldef___init_aformaldef};
+  val_t variable[5];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Local variable */
+  variable[2] =  param1;
+  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AFormaldef].i]) return;
+  /* Register variable[3]: Method return value and escape marker */
+  CALL_parser_prod___AFormaldef___empty_init(variable[0])(variable[0], init_table /*YYY*/) /*AFormaldef::empty_init*/;
+  ATTR_parser_nodes___AFormaldef____n_id(variable[0]) /*AFormaldef::_n_id*/ =  variable[1] /*n_id*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_id*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_id*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n_id*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_id*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n_id*/)( variable[1] /*n_id*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n_id*/)( variable[1] /*n_id*/, variable[0]) /*PNode::parent=*/;
+  }
+  ATTR_parser_nodes___AFormaldef____n_type(variable[0]) /*AFormaldef::_n_type*/ =  variable[2] /*n_type*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*n_type*/ ==  NIT_NULL /*null*/) || (( variable[2] /*n_type*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*n_type*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*n_type*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*n_type*/)( variable[2] /*n_type*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[2] /*n_type*/)( variable[2] /*n_type*/, variable[0]) /*PNode::parent=*/;
   }
+  return_label160: while(false);
+  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AFormaldef].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser_prod___ASuperclass___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, "parser_prod::ASuperclass::empty_init (src/parser//parser_prod.nit:1365,5--27)"};
+void parser_prod___ASuperclass___n_kwspecial__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 1383, LOCATE_parser_prod___ASuperclass___n_kwspecial__eq};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ASuperclass].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ASuperclass].i] = 1;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  ATTR_parser_nodes___ASuperclass____n_kwspecial(variable[0]) /*ASuperclass::_n_kwspecial*/ =  variable[1] /*n*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[0]) /*PNode::parent=*/;
+  }
+  return_label161: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___ASuperclass___init_asuperclass(val_t  self, val_t  param0, val_t  param1, int* init_table) {
-  struct trace_t trace = {NULL, "parser_prod::ASuperclass::init_asuperclass (src/parser//parser_prod.nit:1367,5--1378:22)"};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
+void parser_prod___ASuperclass___n_type__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 1390, LOCATE_parser_prod___ASuperclass___n_type__eq};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  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*/) /*TKwspecial::==*/)))))));
-  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) /*TKwspecial::parent=*/;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  ATTR_parser_nodes___ASuperclass____n_type(variable[0]) /*ASuperclass::_n_type*/ =  variable[1] /*n*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[0]) /*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*/) /*PType::==*/)))))));
-  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) /*PType::parent=*/;
-  }
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ASuperclass].i] = 1;
+  return_label162: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___ASuperclass___replace_child(val_t  self, val_t  param0, val_t  param1) {
-  struct trace_t trace = {NULL, "parser_prod::ASuperclass::replace_child (src/parser//parser_prod.nit:1382,5--1403:18)"};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  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*/) /*PNode::==*/)))))));
-  if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert failed: src/parser//parser_prod.nit:1384,9--32\n"); 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*/) /*TKwspecial::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*PNode::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_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 failed: src/parser//parser_prod.nit:1388,3--33\n"); 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_label146;
-  }
-  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*/) /*PType::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*PNode::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_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 failed: src/parser//parser_prod.nit:1398,3--28\n"); 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_label146;
+  struct trace_t trace = {NULL, NULL, 1416, LOCATE_parser_prod___ASuperclass___replace_child};
+  val_t variable[5];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Local variable */
+  variable[2] =  param1;
+  /* Register variable[3]: Method return value and escape marker */
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ASuperclass___replace_child, LOCATE_parser_prod, 1418); nit_exit(1);}
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___ASuperclass____n_kwspecial(variable[0]) /*ASuperclass::_n_kwspecial*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*PNode::parent=*/;
+      /* Register variable[4]: Result */
+      variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_TKwspecial, ID_TKwspecial)) /*cast TKwspecial*/;
+      if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ASuperclass___replace_child, LOCATE_parser_prod, 1422); nit_exit(1);}
+      ATTR_parser_nodes___ASuperclass____n_kwspecial(variable[0]) /*ASuperclass::_n_kwspecial*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      ATTR_parser_nodes___ASuperclass____n_kwspecial(variable[0]) /*ASuperclass::_n_kwspecial*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label163;
+  }
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___ASuperclass____n_type(variable[0]) /*ASuperclass::_n_type*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*PNode::parent=*/;
+      /* Register variable[4]: Result */
+      variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PType, ID_PType)) /*cast PType*/;
+      if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ASuperclass___replace_child, LOCATE_parser_prod, 1432); nit_exit(1);}
+      ATTR_parser_nodes___ASuperclass____n_type(variable[0]) /*ASuperclass::_n_type*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      ATTR_parser_nodes___ASuperclass____n_type(variable[0]) /*ASuperclass::_n_type*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label163;
   }
-  return_label146: while(false);
+  return_label163: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___ASuperclass___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::ASuperclass::visit_all (src/parser//parser_prod.nit:1407,5--1413:27)"};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  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*/) /*TKwspecial::==*/)))))));
-  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*/) /*PType::==*/)))))));
-  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*/;
-  }
+  struct trace_t trace = {NULL, NULL, 1441, LOCATE_parser_prod___ASuperclass___visit_all};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___ASuperclass____n_kwspecial(variable[0]) /*ASuperclass::_n_kwspecial*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___ASuperclass____n_kwspecial(variable[0]) /*ASuperclass::_n_kwspecial*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___ASuperclass____n_type(variable[0]) /*ASuperclass::_n_type*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___ASuperclass____n_type(variable[0]) /*ASuperclass::_n_type*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  return_label164: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___ASuperclass___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::ASuperclass::visit_all_reverse (src/parser//parser_prod.nit:1417,5--1423:27)"};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  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*/) /*TKwspecial::==*/)))))));
-  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*/) /*PType::==*/)))))));
-  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*/;
-  }
+  struct trace_t trace = {NULL, NULL, 1451, LOCATE_parser_prod___ASuperclass___visit_all_reverse};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___ASuperclass____n_kwspecial(variable[0]) /*ASuperclass::_n_kwspecial*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___ASuperclass____n_kwspecial(variable[0]) /*ASuperclass::_n_kwspecial*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___ASuperclass____n_type(variable[0]) /*ASuperclass::_n_type*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___ASuperclass____n_type(variable[0]) /*ASuperclass::_n_type*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  return_label165: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AAttrPropdef___n_doc__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AAttrPropdef::n_doc= (src/parser//parser_prod.nit:1428,5--1432:20)"};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___ASuperclass___empty_init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 1398, LOCATE_parser_prod___ASuperclass___empty_init};
+  val_t variable[2];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  variable0 =  param0;
-  ATTR_parser_nodes___PPropdef____n_doc( self) /*AAttrPropdef::_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*/) /*PDoc::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PDoc::parent=*/;
-  }
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ASuperclass].i]) return;
+  /* Register variable[1]: Method return value and escape marker */
+  return_label166: while(false);
+  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ASuperclass].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AAttrPropdef___n_readable__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AAttrPropdef::n_readable= (src/parser//parser_prod.nit:1435,5--1439:20)"};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  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*/) /*PAble::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PAble::parent=*/;
-  }
+void parser_prod___ASuperclass___init_asuperclass(val_t  self, val_t  param0, val_t  param1, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 1400, LOCATE_parser_prod___ASuperclass___init_asuperclass};
+  val_t variable[5];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Local variable */
+  variable[2] =  param1;
+  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ASuperclass].i]) return;
+  /* Register variable[3]: Method return value and escape marker */
+  CALL_parser_prod___ASuperclass___empty_init(variable[0])(variable[0], init_table /*YYY*/) /*ASuperclass::empty_init*/;
+  ATTR_parser_nodes___ASuperclass____n_kwspecial(variable[0]) /*ASuperclass::_n_kwspecial*/ =  variable[1] /*n_kwspecial*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_kwspecial*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_kwspecial*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n_kwspecial*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_kwspecial*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n_kwspecial*/)( variable[1] /*n_kwspecial*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n_kwspecial*/)( variable[1] /*n_kwspecial*/, variable[0]) /*PNode::parent=*/;
+  }
+  ATTR_parser_nodes___ASuperclass____n_type(variable[0]) /*ASuperclass::_n_type*/ =  variable[2] /*n_type*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*n_type*/ ==  NIT_NULL /*null*/) || (( variable[2] /*n_type*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*n_type*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*n_type*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*n_type*/)( variable[2] /*n_type*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[2] /*n_type*/)( variable[2] /*n_type*/, variable[0]) /*PNode::parent=*/;
+  }
+  return_label167: while(false);
+  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ASuperclass].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AAttrPropdef___n_writable__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AAttrPropdef::n_writable= (src/parser//parser_prod.nit:1442,5--1446:20)"};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___AAttrPropdef___n_doc__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 1462, LOCATE_parser_prod___AAttrPropdef___n_doc__eq};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  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*/) /*PAble::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PAble::parent=*/;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  ATTR_parser_nodes___PPropdef____n_doc(variable[0]) /*PPropdef::_n_doc*/ =  variable[1] /*n*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[0]) /*PNode::parent=*/;
   }
+  return_label168: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AAttrPropdef___n_kwredef__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AAttrPropdef::n_kwredef= (src/parser//parser_prod.nit:1449,5--1453:20)"};
-  val_t variable0;
-  val_t variable1;
+  struct trace_t trace = {NULL, NULL, 1483, LOCATE_parser_prod___AAttrPropdef___n_kwredef__eq};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  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*/) /*TKwredef::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*TKwredef::parent=*/;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  ATTR_parser_nodes___AAttrPropdef____n_kwredef(variable[0]) /*AAttrPropdef::_n_kwredef*/ =  variable[1] /*n*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[0]) /*PNode::parent=*/;
   }
+  return_label169: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AAttrPropdef___n_visibility__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AAttrPropdef::n_visibility= (src/parser//parser_prod.nit:1456,5--1460:20)"};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  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*/) /*PVisibility::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PVisibility::parent=*/;
+  struct trace_t trace = {NULL, NULL, 1490, LOCATE_parser_prod___AAttrPropdef___n_visibility__eq};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  ATTR_parser_nodes___AAttrPropdef____n_visibility(variable[0]) /*AAttrPropdef::_n_visibility*/ =  variable[1] /*n*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[0]) /*PNode::parent=*/;
   }
+  return_label170: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AAttrPropdef___n_kwattr__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AAttrPropdef::n_kwattr= (src/parser//parser_prod.nit:1463,5--1467:20)"};
-  val_t variable0;
-  val_t variable1;
+  struct trace_t trace = {NULL, NULL, 1497, LOCATE_parser_prod___AAttrPropdef___n_kwattr__eq};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  ATTR_parser_nodes___AAttrPropdef____n_kwattr(variable[0]) /*AAttrPropdef::_n_kwattr*/ =  variable[1] /*n*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[0]) /*PNode::parent=*/;
+  }
+  return_label171: while(false);
+  tracehead = trace.prev;
+  return;
+}
+void parser_prod___AAttrPropdef___n_kwvar__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 1504, LOCATE_parser_prod___AAttrPropdef___n_kwvar__eq};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  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*/) /*TKwattr::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*TKwattr::parent=*/;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  ATTR_parser_nodes___AAttrPropdef____n_kwvar(variable[0]) /*AAttrPropdef::_n_kwvar*/ =  variable[1] /*n*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[0]) /*PNode::parent=*/;
   }
+  return_label172: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AAttrPropdef___n_id__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AAttrPropdef::n_id= (src/parser//parser_prod.nit:1470,5--1474:20)"};
-  val_t variable0;
-  val_t variable1;
+  struct trace_t trace = {NULL, NULL, 1511, LOCATE_parser_prod___AAttrPropdef___n_id__eq};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  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*/) /*TAttrid::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*TAttrid::parent=*/;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  ATTR_parser_nodes___AAttrPropdef____n_id(variable[0]) /*AAttrPropdef::_n_id*/ =  variable[1] /*n*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[0]) /*PNode::parent=*/;
   }
+  return_label173: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AAttrPropdef___n_type__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AAttrPropdef::n_type= (src/parser//parser_prod.nit:1477,5--1481:20)"};
-  val_t variable0;
-  val_t variable1;
+  struct trace_t trace = {NULL, NULL, 1518, LOCATE_parser_prod___AAttrPropdef___n_type__eq};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  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*/) /*PType::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PType::parent=*/;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  ATTR_parser_nodes___AAttrPropdef____n_type(variable[0]) /*AAttrPropdef::_n_type*/ =  variable[1] /*n*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[0]) /*PNode::parent=*/;
   }
+  return_label174: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AAttrPropdef___n_expr__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AAttrPropdef::n_expr= (src/parser//parser_prod.nit:1484,5--1488:20)"};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___AAttrPropdef___n_readable__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 1469, LOCATE_parser_prod___AAttrPropdef___n_readable__eq};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  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*/) /*PExpr::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PExpr::parent=*/;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  ATTR_parser_nodes___AAttrPropdef____n_readable(variable[0]) /*AAttrPropdef::_n_readable*/ =  variable[1] /*n*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[0]) /*PNode::parent=*/;
   }
+  return_label175: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AAttrPropdef___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, "parser_prod::AAttrPropdef::empty_init (src/parser//parser_prod.nit:1492,5--27)"};
-  trace.prev = tracehead; tracehead = &trace;
-  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, "parser_prod::AAttrPropdef::init_aattrpropdef (src/parser//parser_prod.nit:1494,5--1540:22)"};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  val_t variable3;
-  val_t variable4;
-  val_t variable5;
-  val_t variable6;
-  val_t variable7;
-  val_t variable8;
-  val_t variable9;
-  trace.prev = tracehead; tracehead = &trace;
-  variable0 =  param0;
-  variable1 =  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) /*AAttrPropdef::_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*/) /*PDoc::==*/)))))));
-  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) /*PDoc::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*/) /*PAble::==*/)))))));
-  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) /*PAble::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*/) /*PAble::==*/)))))));
-  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) /*PAble::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*/) /*TKwredef::==*/)))))));
-  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) /*TKwredef::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*/) /*PVisibility::==*/)))))));
-  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) /*PVisibility::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*/) /*TKwattr::==*/)))))));
-  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) /*TKwattr::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*/) /*TAttrid::==*/)))))));
-  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) /*TAttrid::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*/) /*PType::==*/)))))));
-  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) /*PType::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*/) /*PExpr::==*/)))))));
-  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) /*PExpr::parent=*/;
-  }
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AAttrPropdef].i] = 1;
+void parser_prod___AAttrPropdef___n_writable__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 1476, LOCATE_parser_prod___AAttrPropdef___n_writable__eq};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  ATTR_parser_nodes___AAttrPropdef____n_writable(variable[0]) /*AAttrPropdef::_n_writable*/ =  variable[1] /*n*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[0]) /*PNode::parent=*/;
+  }
+  return_label176: while(false);
+  tracehead = trace.prev;
+  return;
+}
+void parser_prod___AAttrPropdef___n_expr__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 1525, LOCATE_parser_prod___AAttrPropdef___n_expr__eq};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  ATTR_parser_nodes___AAttrPropdef____n_expr(variable[0]) /*AAttrPropdef::_n_expr*/ =  variable[1] /*n*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[0]) /*PNode::parent=*/;
+  }
+  return_label177: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AAttrPropdef___replace_child(val_t  self, val_t  param0, val_t  param1) {
-  struct trace_t trace = {NULL, "parser_prod::AAttrPropdef::replace_child (src/parser//parser_prod.nit:1544,5--1635:18)"};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  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*/) /*PNode::==*/)))))));
-  if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert failed: src/parser//parser_prod.nit:1546,9--32\n"); nit_exit(1);}
-  variable2 = ATTR_parser_nodes___PPropdef____n_doc( self) /*AAttrPropdef::_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*/) /*PDoc::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*PNode::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_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 failed: src/parser//parser_prod.nit:1550,3--27\n"); nit_exit(1);}
-      ATTR_parser_nodes___PPropdef____n_doc( self) /*AAttrPropdef::_n_doc*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___PPropdef____n_doc( self) /*AAttrPropdef::_n_doc*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label160;
-  }
-  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*/) /*PAble::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*PNode::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_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 failed: src/parser//parser_prod.nit:1560,3--28\n"); 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_label160;
-  }
-  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*/) /*PAble::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*PNode::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_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 failed: src/parser//parser_prod.nit:1570,3--28\n"); 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_label160;
-  }
-  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*/) /*TKwredef::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*PNode::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_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 failed: src/parser//parser_prod.nit:1580,3--31\n"); 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_label160;
-  }
-  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*/) /*PVisibility::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*PNode::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_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 failed: src/parser//parser_prod.nit:1590,3--34\n"); 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_label160;
-  }
-  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*/) /*TKwattr::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*PNode::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_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 failed: src/parser//parser_prod.nit:1600,3--30\n"); 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_label160;
-  }
-  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*/) /*TAttrid::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*PNode::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_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 failed: src/parser//parser_prod.nit:1610,3--30\n"); 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_label160;
-  }
-  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*/) /*PType::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*PNode::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_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 failed: src/parser//parser_prod.nit:1620,3--28\n"); 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_label160;
-  }
-  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*/) /*PExpr::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*PNode::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_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 failed: src/parser//parser_prod.nit:1630,3--28\n"); 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_label160;
+  struct trace_t trace = {NULL, NULL, 1591, LOCATE_parser_prod___AAttrPropdef___replace_child};
+  val_t variable[5];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Local variable */
+  variable[2] =  param1;
+  /* Register variable[3]: Method return value and escape marker */
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AAttrPropdef___replace_child, LOCATE_parser_prod, 1593); nit_exit(1);}
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___PPropdef____n_doc(variable[0]) /*PPropdef::_n_doc*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*PNode::parent=*/;
+      /* Register variable[4]: Result */
+      variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
+      if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AAttrPropdef___replace_child, LOCATE_parser_prod, 1597); nit_exit(1);}
+      ATTR_parser_nodes___PPropdef____n_doc(variable[0]) /*PPropdef::_n_doc*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      ATTR_parser_nodes___PPropdef____n_doc(variable[0]) /*PPropdef::_n_doc*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label178;
+  }
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___AAttrPropdef____n_readable(variable[0]) /*AAttrPropdef::_n_readable*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*PNode::parent=*/;
+      /* Register variable[4]: Result */
+      variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PAble, ID_PAble)) /*cast PAble*/;
+      if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AAttrPropdef___replace_child, LOCATE_parser_prod, 1607); nit_exit(1);}
+      ATTR_parser_nodes___AAttrPropdef____n_readable(variable[0]) /*AAttrPropdef::_n_readable*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      ATTR_parser_nodes___AAttrPropdef____n_readable(variable[0]) /*AAttrPropdef::_n_readable*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label178;
+  }
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___AAttrPropdef____n_writable(variable[0]) /*AAttrPropdef::_n_writable*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*PNode::parent=*/;
+      /* Register variable[4]: Result */
+      variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PAble, ID_PAble)) /*cast PAble*/;
+      if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AAttrPropdef___replace_child, LOCATE_parser_prod, 1617); nit_exit(1);}
+      ATTR_parser_nodes___AAttrPropdef____n_writable(variable[0]) /*AAttrPropdef::_n_writable*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      ATTR_parser_nodes___AAttrPropdef____n_writable(variable[0]) /*AAttrPropdef::_n_writable*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label178;
+  }
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___AAttrPropdef____n_kwredef(variable[0]) /*AAttrPropdef::_n_kwredef*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*PNode::parent=*/;
+      /* Register variable[4]: Result */
+      variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
+      if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AAttrPropdef___replace_child, LOCATE_parser_prod, 1627); nit_exit(1);}
+      ATTR_parser_nodes___AAttrPropdef____n_kwredef(variable[0]) /*AAttrPropdef::_n_kwredef*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      ATTR_parser_nodes___AAttrPropdef____n_kwredef(variable[0]) /*AAttrPropdef::_n_kwredef*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label178;
+  }
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___AAttrPropdef____n_visibility(variable[0]) /*AAttrPropdef::_n_visibility*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*PNode::parent=*/;
+      /* Register variable[4]: Result */
+      variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
+      if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AAttrPropdef___replace_child, LOCATE_parser_prod, 1637); nit_exit(1);}
+      ATTR_parser_nodes___AAttrPropdef____n_visibility(variable[0]) /*AAttrPropdef::_n_visibility*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      ATTR_parser_nodes___AAttrPropdef____n_visibility(variable[0]) /*AAttrPropdef::_n_visibility*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label178;
+  }
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___AAttrPropdef____n_kwattr(variable[0]) /*AAttrPropdef::_n_kwattr*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*PNode::parent=*/;
+      /* Register variable[4]: Result */
+      variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_TKwattr, ID_TKwattr)) /*cast TKwattr*/;
+      if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AAttrPropdef___replace_child, LOCATE_parser_prod, 1647); nit_exit(1);}
+      ATTR_parser_nodes___AAttrPropdef____n_kwattr(variable[0]) /*AAttrPropdef::_n_kwattr*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      ATTR_parser_nodes___AAttrPropdef____n_kwattr(variable[0]) /*AAttrPropdef::_n_kwattr*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label178;
+  }
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___AAttrPropdef____n_kwvar(variable[0]) /*AAttrPropdef::_n_kwvar*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*PNode::parent=*/;
+      /* Register variable[4]: Result */
+      variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_TKwvar, ID_TKwvar)) /*cast TKwvar*/;
+      if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AAttrPropdef___replace_child, LOCATE_parser_prod, 1657); nit_exit(1);}
+      ATTR_parser_nodes___AAttrPropdef____n_kwvar(variable[0]) /*AAttrPropdef::_n_kwvar*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      ATTR_parser_nodes___AAttrPropdef____n_kwvar(variable[0]) /*AAttrPropdef::_n_kwvar*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label178;
+  }
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___AAttrPropdef____n_id(variable[0]) /*AAttrPropdef::_n_id*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*PNode::parent=*/;
+      /* Register variable[4]: Result */
+      variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_TAttrid, ID_TAttrid)) /*cast TAttrid*/;
+      if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AAttrPropdef___replace_child, LOCATE_parser_prod, 1667); nit_exit(1);}
+      ATTR_parser_nodes___AAttrPropdef____n_id(variable[0]) /*AAttrPropdef::_n_id*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      ATTR_parser_nodes___AAttrPropdef____n_id(variable[0]) /*AAttrPropdef::_n_id*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label178;
+  }
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___AAttrPropdef____n_type(variable[0]) /*AAttrPropdef::_n_type*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*PNode::parent=*/;
+      /* Register variable[4]: Result */
+      variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PType, ID_PType)) /*cast PType*/;
+      if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AAttrPropdef___replace_child, LOCATE_parser_prod, 1677); nit_exit(1);}
+      ATTR_parser_nodes___AAttrPropdef____n_type(variable[0]) /*AAttrPropdef::_n_type*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      ATTR_parser_nodes___AAttrPropdef____n_type(variable[0]) /*AAttrPropdef::_n_type*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label178;
+  }
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___AAttrPropdef____n_expr(variable[0]) /*AAttrPropdef::_n_expr*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*PNode::parent=*/;
+      /* Register variable[4]: Result */
+      variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
+      if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AAttrPropdef___replace_child, LOCATE_parser_prod, 1687); nit_exit(1);}
+      ATTR_parser_nodes___AAttrPropdef____n_expr(variable[0]) /*AAttrPropdef::_n_expr*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      ATTR_parser_nodes___AAttrPropdef____n_expr(variable[0]) /*AAttrPropdef::_n_expr*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label178;
   }
-  return_label160: while(false);
+  return_label178: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AAttrPropdef___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AAttrPropdef::visit_all (src/parser//parser_prod.nit:1639,5--1666:27)"};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___PPropdef____n_doc( self) /*AAttrPropdef::_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*/) /*PDoc::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___PPropdef____n_doc( self) /*AAttrPropdef::_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*/) /*PAble::==*/)))))));
-  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*/) /*PAble::==*/)))))));
-  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*/) /*TKwredef::==*/)))))));
-  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*/) /*PVisibility::==*/)))))));
-  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*/) /*TKwattr::==*/)))))));
-  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*/) /*TAttrid::==*/)))))));
-  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*/) /*PType::==*/)))))));
-  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*/) /*PExpr::==*/)))))));
-  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*/;
-  }
+  struct trace_t trace = {NULL, NULL, 1696, LOCATE_parser_prod___AAttrPropdef___visit_all};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___PPropdef____n_doc(variable[0]) /*PPropdef::_n_doc*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___PPropdef____n_doc(variable[0]) /*PPropdef::_n_doc*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AAttrPropdef____n_readable(variable[0]) /*AAttrPropdef::_n_readable*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AAttrPropdef____n_readable(variable[0]) /*AAttrPropdef::_n_readable*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AAttrPropdef____n_writable(variable[0]) /*AAttrPropdef::_n_writable*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AAttrPropdef____n_writable(variable[0]) /*AAttrPropdef::_n_writable*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AAttrPropdef____n_kwredef(variable[0]) /*AAttrPropdef::_n_kwredef*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AAttrPropdef____n_kwredef(variable[0]) /*AAttrPropdef::_n_kwredef*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AAttrPropdef____n_visibility(variable[0]) /*AAttrPropdef::_n_visibility*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AAttrPropdef____n_visibility(variable[0]) /*AAttrPropdef::_n_visibility*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AAttrPropdef____n_kwattr(variable[0]) /*AAttrPropdef::_n_kwattr*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AAttrPropdef____n_kwattr(variable[0]) /*AAttrPropdef::_n_kwattr*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AAttrPropdef____n_kwvar(variable[0]) /*AAttrPropdef::_n_kwvar*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AAttrPropdef____n_kwvar(variable[0]) /*AAttrPropdef::_n_kwvar*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AAttrPropdef____n_id(variable[0]) /*AAttrPropdef::_n_id*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AAttrPropdef____n_id(variable[0]) /*AAttrPropdef::_n_id*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AAttrPropdef____n_type(variable[0]) /*AAttrPropdef::_n_type*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AAttrPropdef____n_type(variable[0]) /*AAttrPropdef::_n_type*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AAttrPropdef____n_expr(variable[0]) /*AAttrPropdef::_n_expr*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AAttrPropdef____n_expr(variable[0]) /*AAttrPropdef::_n_expr*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  return_label179: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AAttrPropdef___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AAttrPropdef::visit_all_reverse (src/parser//parser_prod.nit:1670,5--1697:27)"};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___PPropdef____n_doc( self) /*AAttrPropdef::_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*/) /*PDoc::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___PPropdef____n_doc( self) /*AAttrPropdef::_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*/) /*PAble::==*/)))))));
-  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*/) /*PAble::==*/)))))));
-  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*/) /*TKwredef::==*/)))))));
-  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*/) /*PVisibility::==*/)))))));
-  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*/) /*TKwattr::==*/)))))));
-  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*/) /*TAttrid::==*/)))))));
-  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*/) /*PType::==*/)))))));
-  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*/) /*PExpr::==*/)))))));
-  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*/;
-  }
+  struct trace_t trace = {NULL, NULL, 1730, LOCATE_parser_prod___AAttrPropdef___visit_all_reverse};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___PPropdef____n_doc(variable[0]) /*PPropdef::_n_doc*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___PPropdef____n_doc(variable[0]) /*PPropdef::_n_doc*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AAttrPropdef____n_readable(variable[0]) /*AAttrPropdef::_n_readable*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AAttrPropdef____n_readable(variable[0]) /*AAttrPropdef::_n_readable*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AAttrPropdef____n_writable(variable[0]) /*AAttrPropdef::_n_writable*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AAttrPropdef____n_writable(variable[0]) /*AAttrPropdef::_n_writable*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AAttrPropdef____n_kwredef(variable[0]) /*AAttrPropdef::_n_kwredef*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AAttrPropdef____n_kwredef(variable[0]) /*AAttrPropdef::_n_kwredef*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AAttrPropdef____n_visibility(variable[0]) /*AAttrPropdef::_n_visibility*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AAttrPropdef____n_visibility(variable[0]) /*AAttrPropdef::_n_visibility*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AAttrPropdef____n_kwattr(variable[0]) /*AAttrPropdef::_n_kwattr*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AAttrPropdef____n_kwattr(variable[0]) /*AAttrPropdef::_n_kwattr*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AAttrPropdef____n_kwvar(variable[0]) /*AAttrPropdef::_n_kwvar*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AAttrPropdef____n_kwvar(variable[0]) /*AAttrPropdef::_n_kwvar*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AAttrPropdef____n_id(variable[0]) /*AAttrPropdef::_n_id*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AAttrPropdef____n_id(variable[0]) /*AAttrPropdef::_n_id*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AAttrPropdef____n_type(variable[0]) /*AAttrPropdef::_n_type*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AAttrPropdef____n_type(variable[0]) /*AAttrPropdef::_n_type*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AAttrPropdef____n_expr(variable[0]) /*AAttrPropdef::_n_expr*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AAttrPropdef____n_expr(variable[0]) /*AAttrPropdef::_n_expr*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  return_label180: while(false);
+  tracehead = trace.prev;
+  return;
+}
+void parser_prod___AAttrPropdef___empty_init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 1533, LOCATE_parser_prod___AAttrPropdef___empty_init};
+  val_t variable[2];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AAttrPropdef].i]) return;
+  /* Register variable[1]: Method return value and escape marker */
+  return_label181: while(false);
+  init_table[VAL2OBJ(variable[0])->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, val_t  param9, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 1535, LOCATE_parser_prod___AAttrPropdef___init_aattrpropdef};
+  val_t variable[13];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Local variable */
+  variable[2] =  param1;
+  /* Register variable[3]: Local variable */
+  variable[3] =  param2;
+  /* Register variable[4]: Local variable */
+  variable[4] =  param3;
+  /* Register variable[5]: Local variable */
+  variable[5] =  param4;
+  /* Register variable[6]: Local variable */
+  variable[6] =  param5;
+  /* Register variable[7]: Local variable */
+  variable[7] =  param6;
+  /* Register variable[8]: Local variable */
+  variable[8] =  param7;
+  /* Register variable[9]: Local variable */
+  variable[9] =  param8;
+  /* Register variable[10]: Local variable */
+  variable[10] =  param9;
+  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AAttrPropdef].i]) return;
+  /* Register variable[11]: Method return value and escape marker */
+  CALL_parser_prod___AAttrPropdef___empty_init(variable[0])(variable[0], init_table /*YYY*/) /*AAttrPropdef::empty_init*/;
+  ATTR_parser_nodes___PPropdef____n_doc(variable[0]) /*PPropdef::_n_doc*/ =  variable[1] /*n_doc*/;
+  /* Register variable[12]: Result */
+  variable[12] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_doc*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_doc*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n_doc*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_doc*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n_doc*/)( variable[1] /*n_doc*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[12])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n_doc*/)( variable[1] /*n_doc*/, variable[0]) /*PNode::parent=*/;
+  }
+  ATTR_parser_nodes___AAttrPropdef____n_readable(variable[0]) /*AAttrPropdef::_n_readable*/ =  variable[2] /*n_readable*/;
+  /* Register variable[12]: Result */
+  variable[12] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*n_readable*/ ==  NIT_NULL /*null*/) || (( variable[2] /*n_readable*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*n_readable*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*n_readable*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*n_readable*/)( variable[2] /*n_readable*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[12])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[2] /*n_readable*/)( variable[2] /*n_readable*/, variable[0]) /*PNode::parent=*/;
+  }
+  ATTR_parser_nodes___AAttrPropdef____n_writable(variable[0]) /*AAttrPropdef::_n_writable*/ =  variable[3] /*n_writable*/;
+  /* Register variable[12]: Result */
+  variable[12] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[3] /*n_writable*/ ==  NIT_NULL /*null*/) || (( variable[3] /*n_writable*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[3] /*n_writable*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[3] /*n_writable*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[3] /*n_writable*/)( variable[3] /*n_writable*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[12])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[3] /*n_writable*/)( variable[3] /*n_writable*/, variable[0]) /*PNode::parent=*/;
+  }
+  ATTR_parser_nodes___AAttrPropdef____n_kwredef(variable[0]) /*AAttrPropdef::_n_kwredef*/ =  variable[4] /*n_kwredef*/;
+  /* Register variable[12]: Result */
+  variable[12] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[4] /*n_kwredef*/ ==  NIT_NULL /*null*/) || (( variable[4] /*n_kwredef*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[4] /*n_kwredef*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[4] /*n_kwredef*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[4] /*n_kwredef*/)( variable[4] /*n_kwredef*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[12])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[4] /*n_kwredef*/)( variable[4] /*n_kwredef*/, variable[0]) /*PNode::parent=*/;
+  }
+  ATTR_parser_nodes___AAttrPropdef____n_visibility(variable[0]) /*AAttrPropdef::_n_visibility*/ =  variable[5] /*n_visibility*/;
+  /* Register variable[12]: Result */
+  variable[12] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[5] /*n_visibility*/ ==  NIT_NULL /*null*/) || (( variable[5] /*n_visibility*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[5] /*n_visibility*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[5] /*n_visibility*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[5] /*n_visibility*/)( variable[5] /*n_visibility*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[12])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[5] /*n_visibility*/)( variable[5] /*n_visibility*/, variable[0]) /*PNode::parent=*/;
+  }
+  ATTR_parser_nodes___AAttrPropdef____n_kwattr(variable[0]) /*AAttrPropdef::_n_kwattr*/ =  variable[6] /*n_kwattr*/;
+  /* Register variable[12]: Result */
+  variable[12] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[6] /*n_kwattr*/ ==  NIT_NULL /*null*/) || (( variable[6] /*n_kwattr*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[6] /*n_kwattr*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[6] /*n_kwattr*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[6] /*n_kwattr*/)( variable[6] /*n_kwattr*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[12])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[6] /*n_kwattr*/)( variable[6] /*n_kwattr*/, variable[0]) /*PNode::parent=*/;
+  }
+  ATTR_parser_nodes___AAttrPropdef____n_kwvar(variable[0]) /*AAttrPropdef::_n_kwvar*/ =  variable[7] /*n_kwvar*/;
+  /* Register variable[12]: Result */
+  variable[12] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[7] /*n_kwvar*/ ==  NIT_NULL /*null*/) || (( variable[7] /*n_kwvar*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[7] /*n_kwvar*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[7] /*n_kwvar*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[7] /*n_kwvar*/)( variable[7] /*n_kwvar*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[12])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[7] /*n_kwvar*/)( variable[7] /*n_kwvar*/, variable[0]) /*PNode::parent=*/;
+  }
+  ATTR_parser_nodes___AAttrPropdef____n_id(variable[0]) /*AAttrPropdef::_n_id*/ =  variable[8] /*n_id*/;
+  /* Register variable[12]: Result */
+  variable[12] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[8] /*n_id*/ ==  NIT_NULL /*null*/) || (( variable[8] /*n_id*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[8] /*n_id*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[8] /*n_id*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[8] /*n_id*/)( variable[8] /*n_id*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[12])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[8] /*n_id*/)( variable[8] /*n_id*/, variable[0]) /*PNode::parent=*/;
+  }
+  ATTR_parser_nodes___AAttrPropdef____n_type(variable[0]) /*AAttrPropdef::_n_type*/ =  variable[9] /*n_type*/;
+  /* Register variable[12]: Result */
+  variable[12] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[9] /*n_type*/ ==  NIT_NULL /*null*/) || (( variable[9] /*n_type*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[9] /*n_type*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[9] /*n_type*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[9] /*n_type*/)( variable[9] /*n_type*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[12])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[9] /*n_type*/)( variable[9] /*n_type*/, variable[0]) /*PNode::parent=*/;
+  }
+  ATTR_parser_nodes___AAttrPropdef____n_expr(variable[0]) /*AAttrPropdef::_n_expr*/ =  variable[10] /*n_expr*/;
+  /* Register variable[12]: Result */
+  variable[12] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[10] /*n_expr*/ ==  NIT_NULL /*null*/) || (( variable[10] /*n_expr*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[10] /*n_expr*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[10] /*n_expr*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[10] /*n_expr*/)( variable[10] /*n_expr*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[12])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[10] /*n_expr*/)( variable[10] /*n_expr*/, variable[0]) /*PNode::parent=*/;
+  }
+  return_label182: while(false);
+  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AAttrPropdef].i] = 1;
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AMethPropdef___n_doc__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AMethPropdef::n_doc= (src/parser//parser_prod.nit:1702,5--1706:20)"};
-  val_t variable0;
-  val_t variable1;
+  struct trace_t trace = {NULL, NULL, 1765, LOCATE_parser_prod___AMethPropdef___n_doc__eq};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  variable0 =  param0;
-  ATTR_parser_nodes___PPropdef____n_doc( self) /*AMethPropdef::_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*/) /*PDoc::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PDoc::parent=*/;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  ATTR_parser_nodes___PPropdef____n_doc(variable[0]) /*PPropdef::_n_doc*/ =  variable[1] /*n*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[0]) /*PNode::parent=*/;
   }
+  return_label183: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AMethPropdef___n_kwredef__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AMethPropdef::n_kwredef= (src/parser//parser_prod.nit:1709,5--1713:20)"};
-  val_t variable0;
-  val_t variable1;
+  struct trace_t trace = {NULL, NULL, 1772, LOCATE_parser_prod___AMethPropdef___n_kwredef__eq};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  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*/) /*TKwredef::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*TKwredef::parent=*/;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  ATTR_parser_nodes___AMethPropdef____n_kwredef(variable[0]) /*AMethPropdef::_n_kwredef*/ =  variable[1] /*n*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[0]) /*PNode::parent=*/;
   }
+  return_label184: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AMethPropdef___n_visibility__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AMethPropdef::n_visibility= (src/parser//parser_prod.nit:1716,5--1720:20)"};
-  val_t variable0;
-  val_t variable1;
+  struct trace_t trace = {NULL, NULL, 1779, LOCATE_parser_prod___AMethPropdef___n_visibility__eq};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  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*/) /*PVisibility::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PVisibility::parent=*/;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  ATTR_parser_nodes___AMethPropdef____n_visibility(variable[0]) /*AMethPropdef::_n_visibility*/ =  variable[1] /*n*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[0]) /*PNode::parent=*/;
   }
+  return_label185: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AMethPropdef___n_methid__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AMethPropdef::n_methid= (src/parser//parser_prod.nit:1723,5--1727:20)"};
-  val_t variable0;
-  val_t variable1;
+  struct trace_t trace = {NULL, NULL, 1786, LOCATE_parser_prod___AMethPropdef___n_methid__eq};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  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*/) /*PMethid::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PMethid::parent=*/;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  ATTR_parser_nodes___AMethPropdef____n_methid(variable[0]) /*AMethPropdef::_n_methid*/ =  variable[1] /*n*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[0]) /*PNode::parent=*/;
   }
+  return_label186: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AMethPropdef___n_signature__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AMethPropdef::n_signature= (src/parser//parser_prod.nit:1730,5--1734:20)"};
-  val_t variable0;
-  val_t variable1;
+  struct trace_t trace = {NULL, NULL, 1793, LOCATE_parser_prod___AMethPropdef___n_signature__eq};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  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*/) /*PSignature::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PSignature::parent=*/;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  ATTR_parser_nodes___AMethPropdef____n_signature(variable[0]) /*AMethPropdef::_n_signature*/ =  variable[1] /*n*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[0]) /*PNode::parent=*/;
   }
+  return_label187: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AMethPropdef___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, "parser_prod::AMethPropdef::empty_init (src/parser//parser_prod.nit:1738,5--27)"};
-  trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AMethPropdef].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AMethPropdef].i] = 1;
+void parser_prod___AMethPropdef___replace_child(val_t  self, val_t  param0, val_t  param1) {
+  struct trace_t trace = {NULL, NULL, 1834, LOCATE_parser_prod___AMethPropdef___replace_child};
+  val_t variable[5];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Local variable */
+  variable[2] =  param1;
+  /* Register variable[3]: Method return value and escape marker */
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AMethPropdef___replace_child, LOCATE_parser_prod, 1836); nit_exit(1);}
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___PPropdef____n_doc(variable[0]) /*PPropdef::_n_doc*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*PNode::parent=*/;
+      /* Register variable[4]: Result */
+      variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
+      if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AMethPropdef___replace_child, LOCATE_parser_prod, 1840); nit_exit(1);}
+      ATTR_parser_nodes___PPropdef____n_doc(variable[0]) /*PPropdef::_n_doc*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      ATTR_parser_nodes___PPropdef____n_doc(variable[0]) /*PPropdef::_n_doc*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label188;
+  }
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___AMethPropdef____n_kwredef(variable[0]) /*AMethPropdef::_n_kwredef*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*PNode::parent=*/;
+      /* Register variable[4]: Result */
+      variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
+      if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AMethPropdef___replace_child, LOCATE_parser_prod, 1850); nit_exit(1);}
+      ATTR_parser_nodes___AMethPropdef____n_kwredef(variable[0]) /*AMethPropdef::_n_kwredef*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      ATTR_parser_nodes___AMethPropdef____n_kwredef(variable[0]) /*AMethPropdef::_n_kwredef*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label188;
+  }
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___AMethPropdef____n_visibility(variable[0]) /*AMethPropdef::_n_visibility*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*PNode::parent=*/;
+      /* Register variable[4]: Result */
+      variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
+      if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AMethPropdef___replace_child, LOCATE_parser_prod, 1860); nit_exit(1);}
+      ATTR_parser_nodes___AMethPropdef____n_visibility(variable[0]) /*AMethPropdef::_n_visibility*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      ATTR_parser_nodes___AMethPropdef____n_visibility(variable[0]) /*AMethPropdef::_n_visibility*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label188;
+  }
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___AMethPropdef____n_methid(variable[0]) /*AMethPropdef::_n_methid*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*PNode::parent=*/;
+      /* Register variable[4]: Result */
+      variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PMethid, ID_PMethid)) /*cast PMethid*/;
+      if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AMethPropdef___replace_child, LOCATE_parser_prod, 1870); nit_exit(1);}
+      ATTR_parser_nodes___AMethPropdef____n_methid(variable[0]) /*AMethPropdef::_n_methid*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      ATTR_parser_nodes___AMethPropdef____n_methid(variable[0]) /*AMethPropdef::_n_methid*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label188;
+  }
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___AMethPropdef____n_signature(variable[0]) /*AMethPropdef::_n_signature*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*PNode::parent=*/;
+      /* Register variable[4]: Result */
+      variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PSignature, ID_PSignature)) /*cast PSignature*/;
+      if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AMethPropdef___replace_child, LOCATE_parser_prod, 1880); nit_exit(1);}
+      ATTR_parser_nodes___AMethPropdef____n_signature(variable[0]) /*AMethPropdef::_n_signature*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      ATTR_parser_nodes___AMethPropdef____n_signature(variable[0]) /*AMethPropdef::_n_signature*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label188;
+  }
+  return_label188: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AMethPropdef___init_amethpropdef(val_t  self, val_t  param0, val_t  param1, val_t  param2, val_t  param3, val_t  param4, int* init_table) {
-  struct trace_t trace = {NULL, "parser_prod::AMethPropdef::init_amethpropdef (src/parser//parser_prod.nit:1740,5--1766:27)"};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  val_t variable3;
-  val_t variable4;
-  val_t variable5;
-  trace.prev = tracehead; tracehead = &trace;
-  variable0 =  param0;
-  variable1 =  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) /*AMethPropdef::_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*/) /*PDoc::==*/)))))));
-  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) /*PDoc::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*/) /*TKwredef::==*/)))))));
-  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) /*TKwredef::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*/) /*PVisibility::==*/)))))));
-  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) /*PVisibility::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*/) /*PMethid::==*/)))))));
-  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) /*PMethid::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*/) /*PSignature::==*/)))))));
-  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) /*PSignature::parent=*/;
-  }
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AMethPropdef].i] = 1;
+void parser_prod___AMethPropdef___visit_all(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 1889, LOCATE_parser_prod___AMethPropdef___visit_all};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___PPropdef____n_doc(variable[0]) /*PPropdef::_n_doc*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___PPropdef____n_doc(variable[0]) /*PPropdef::_n_doc*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AMethPropdef____n_kwredef(variable[0]) /*AMethPropdef::_n_kwredef*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AMethPropdef____n_kwredef(variable[0]) /*AMethPropdef::_n_kwredef*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AMethPropdef____n_visibility(variable[0]) /*AMethPropdef::_n_visibility*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AMethPropdef____n_visibility(variable[0]) /*AMethPropdef::_n_visibility*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AMethPropdef____n_methid(variable[0]) /*AMethPropdef::_n_methid*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AMethPropdef____n_methid(variable[0]) /*AMethPropdef::_n_methid*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AMethPropdef____n_signature(variable[0]) /*AMethPropdef::_n_signature*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AMethPropdef____n_signature(variable[0]) /*AMethPropdef::_n_signature*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  return_label189: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AMethPropdef___replace_child(val_t  self, val_t  param0, val_t  param1) {
-  struct trace_t trace = {NULL, "parser_prod::AMethPropdef::replace_child (src/parser//parser_prod.nit:1770,5--1821:18)"};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  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*/) /*PNode::==*/)))))));
-  if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert failed: src/parser//parser_prod.nit:1772,9--32\n"); nit_exit(1);}
-  variable2 = ATTR_parser_nodes___PPropdef____n_doc( self) /*AMethPropdef::_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*/) /*PDoc::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*PNode::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_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 failed: src/parser//parser_prod.nit:1776,3--27\n"); nit_exit(1);}
-      ATTR_parser_nodes___PPropdef____n_doc( self) /*AMethPropdef::_n_doc*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___PPropdef____n_doc( self) /*AMethPropdef::_n_doc*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label170;
-  }
-  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*/) /*TKwredef::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*PNode::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_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 failed: src/parser//parser_prod.nit:1786,3--31\n"); 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_label170;
-  }
-  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*/) /*PVisibility::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*PNode::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_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 failed: src/parser//parser_prod.nit:1796,3--34\n"); 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_label170;
-  }
-  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*/) /*PMethid::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*PNode::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_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 failed: src/parser//parser_prod.nit:1806,3--30\n"); 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_label170;
-  }
-  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*/) /*PSignature::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*PNode::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_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 failed: src/parser//parser_prod.nit:1816,3--33\n"); 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_label170;
-  }
-  return_label170: while(false);
+void parser_prod___AMethPropdef___visit_all_reverse(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 1908, LOCATE_parser_prod___AMethPropdef___visit_all_reverse};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___PPropdef____n_doc(variable[0]) /*PPropdef::_n_doc*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___PPropdef____n_doc(variable[0]) /*PPropdef::_n_doc*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AMethPropdef____n_kwredef(variable[0]) /*AMethPropdef::_n_kwredef*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AMethPropdef____n_kwredef(variable[0]) /*AMethPropdef::_n_kwredef*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AMethPropdef____n_visibility(variable[0]) /*AMethPropdef::_n_visibility*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AMethPropdef____n_visibility(variable[0]) /*AMethPropdef::_n_visibility*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AMethPropdef____n_methid(variable[0]) /*AMethPropdef::_n_methid*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AMethPropdef____n_methid(variable[0]) /*AMethPropdef::_n_methid*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AMethPropdef____n_signature(variable[0]) /*AMethPropdef::_n_signature*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AMethPropdef____n_signature(variable[0]) /*AMethPropdef::_n_signature*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  return_label190: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AMethPropdef___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AMethPropdef::visit_all (src/parser//parser_prod.nit:1825,5--1840:32)"};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___AMethPropdef___empty_init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 1801, LOCATE_parser_prod___AMethPropdef___empty_init};
+  val_t variable[2];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___PPropdef____n_doc( self) /*AMethPropdef::_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*/) /*PDoc::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___PPropdef____n_doc( self) /*AMethPropdef::_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*/) /*TKwredef::==*/)))))));
-  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*/) /*PVisibility::==*/)))))));
-  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*/) /*PMethid::==*/)))))));
-  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*/) /*PSignature::==*/)))))));
-  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*/;
-  }
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AMethPropdef].i]) return;
+  /* Register variable[1]: Method return value and escape marker */
+  return_label191: while(false);
+  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AMethPropdef].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AMethPropdef___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AMethPropdef::visit_all_reverse (src/parser//parser_prod.nit:1844,5--1859:32)"};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___PPropdef____n_doc( self) /*AMethPropdef::_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*/) /*PDoc::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___PPropdef____n_doc( self) /*AMethPropdef::_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*/) /*TKwredef::==*/)))))));
-  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*/) /*PVisibility::==*/)))))));
-  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*/) /*PMethid::==*/)))))));
-  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*/) /*PSignature::==*/)))))));
-  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*/;
+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, 1803, LOCATE_parser_prod___AMethPropdef___init_amethpropdef};
+  val_t variable[8];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Local variable */
+  variable[2] =  param1;
+  /* Register variable[3]: Local variable */
+  variable[3] =  param2;
+  /* Register variable[4]: Local variable */
+  variable[4] =  param3;
+  /* Register variable[5]: Local variable */
+  variable[5] =  param4;
+  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AMethPropdef].i]) return;
+  /* Register variable[6]: Method return value and escape marker */
+  CALL_parser_prod___AMethPropdef___empty_init(variable[0])(variable[0], init_table /*YYY*/) /*AMethPropdef::empty_init*/;
+  ATTR_parser_nodes___PPropdef____n_doc(variable[0]) /*PPropdef::_n_doc*/ =  variable[1] /*n_doc*/;
+  /* Register variable[7]: Result */
+  variable[7] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_doc*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_doc*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n_doc*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_doc*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n_doc*/)( variable[1] /*n_doc*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[7])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n_doc*/)( variable[1] /*n_doc*/, variable[0]) /*PNode::parent=*/;
+  }
+  ATTR_parser_nodes___AMethPropdef____n_kwredef(variable[0]) /*AMethPropdef::_n_kwredef*/ =  variable[2] /*n_kwredef*/;
+  /* Register variable[7]: Result */
+  variable[7] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*n_kwredef*/ ==  NIT_NULL /*null*/) || (( variable[2] /*n_kwredef*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*n_kwredef*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*n_kwredef*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*n_kwredef*/)( variable[2] /*n_kwredef*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[7])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[2] /*n_kwredef*/)( variable[2] /*n_kwredef*/, variable[0]) /*PNode::parent=*/;
+  }
+  ATTR_parser_nodes___AMethPropdef____n_visibility(variable[0]) /*AMethPropdef::_n_visibility*/ =  variable[3] /*n_visibility*/;
+  /* Register variable[7]: Result */
+  variable[7] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[3] /*n_visibility*/ ==  NIT_NULL /*null*/) || (( variable[3] /*n_visibility*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[3] /*n_visibility*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[3] /*n_visibility*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[3] /*n_visibility*/)( variable[3] /*n_visibility*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[7])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[3] /*n_visibility*/)( variable[3] /*n_visibility*/, variable[0]) /*PNode::parent=*/;
+  }
+  ATTR_parser_nodes___AMethPropdef____n_methid(variable[0]) /*AMethPropdef::_n_methid*/ =  variable[4] /*n_methid*/;
+  /* Register variable[7]: Result */
+  variable[7] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[4] /*n_methid*/ ==  NIT_NULL /*null*/) || (( variable[4] /*n_methid*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[4] /*n_methid*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[4] /*n_methid*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[4] /*n_methid*/)( variable[4] /*n_methid*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[7])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[4] /*n_methid*/)( variable[4] /*n_methid*/, variable[0]) /*PNode::parent=*/;
+  }
+  ATTR_parser_nodes___AMethPropdef____n_signature(variable[0]) /*AMethPropdef::_n_signature*/ =  variable[5] /*n_signature*/;
+  /* Register variable[7]: Result */
+  variable[7] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[5] /*n_signature*/ ==  NIT_NULL /*null*/) || (( variable[5] /*n_signature*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[5] /*n_signature*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[5] /*n_signature*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[5] /*n_signature*/)( variable[5] /*n_signature*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[7])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[5] /*n_signature*/)( variable[5] /*n_signature*/, variable[0]) /*PNode::parent=*/;
   }
+  return_label192: while(false);
+  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AMethPropdef].i] = 1;
   tracehead = trace.prev;
   return;
 }
 void parser_prod___ADeferredMethPropdef___n_doc__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::ADeferredMethPropdef::n_doc= (src/parser//parser_prod.nit:1864,5--1868:20)"};
-  val_t variable0;
-  val_t variable1;
+  struct trace_t trace = {NULL, NULL, 1928, LOCATE_parser_prod___ADeferredMethPropdef___n_doc__eq};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  variable0 =  param0;
-  ATTR_parser_nodes___PPropdef____n_doc( self) /*ADeferredMethPropdef::_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*/) /*PDoc::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PDoc::parent=*/;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  ATTR_parser_nodes___PPropdef____n_doc(variable[0]) /*PPropdef::_n_doc*/ =  variable[1] /*n*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[0]) /*PNode::parent=*/;
   }
+  return_label193: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___ADeferredMethPropdef___n_kwredef__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::ADeferredMethPropdef::n_kwredef= (src/parser//parser_prod.nit:1871,5--1875:20)"};
-  val_t variable0;
-  val_t variable1;
+  struct trace_t trace = {NULL, NULL, 1935, LOCATE_parser_prod___ADeferredMethPropdef___n_kwredef__eq};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  variable0 =  param0;
-  ATTR_parser_nodes___AMethPropdef____n_kwredef( self) /*ADeferredMethPropdef::_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*/) /*TKwredef::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*TKwredef::parent=*/;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  ATTR_parser_nodes___AMethPropdef____n_kwredef(variable[0]) /*AMethPropdef::_n_kwredef*/ =  variable[1] /*n*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[0]) /*PNode::parent=*/;
   }
+  return_label194: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___ADeferredMethPropdef___n_visibility__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::ADeferredMethPropdef::n_visibility= (src/parser//parser_prod.nit:1878,5--1882:20)"};
-  val_t variable0;
-  val_t variable1;
+  struct trace_t trace = {NULL, NULL, 1942, LOCATE_parser_prod___ADeferredMethPropdef___n_visibility__eq};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  variable0 =  param0;
-  ATTR_parser_nodes___AMethPropdef____n_visibility( self) /*ADeferredMethPropdef::_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*/) /*PVisibility::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PVisibility::parent=*/;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  ATTR_parser_nodes___AMethPropdef____n_visibility(variable[0]) /*AMethPropdef::_n_visibility*/ =  variable[1] /*n*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[0]) /*PNode::parent=*/;
   }
+  return_label195: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___ADeferredMethPropdef___n_kwmeth__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::ADeferredMethPropdef::n_kwmeth= (src/parser//parser_prod.nit:1885,5--1889:20)"};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___ADeferredMethPropdef___n_methid__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 1956, LOCATE_parser_prod___ADeferredMethPropdef___n_methid__eq};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  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*/) /*TKwmeth::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*TKwmeth::parent=*/;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  ATTR_parser_nodes___AMethPropdef____n_methid(variable[0]) /*AMethPropdef::_n_methid*/ =  variable[1] /*n*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[0]) /*PNode::parent=*/;
   }
+  return_label196: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___ADeferredMethPropdef___n_methid__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::ADeferredMethPropdef::n_methid= (src/parser//parser_prod.nit:1892,5--1896:20)"};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___ADeferredMethPropdef___n_signature__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 1963, LOCATE_parser_prod___ADeferredMethPropdef___n_signature__eq};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  variable0 =  param0;
-  ATTR_parser_nodes___AMethPropdef____n_methid( self) /*ADeferredMethPropdef::_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*/) /*PMethid::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PMethid::parent=*/;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  ATTR_parser_nodes___AMethPropdef____n_signature(variable[0]) /*AMethPropdef::_n_signature*/ =  variable[1] /*n*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[0]) /*PNode::parent=*/;
   }
+  return_label197: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___ADeferredMethPropdef___n_signature__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::ADeferredMethPropdef::n_signature= (src/parser//parser_prod.nit:1899,5--1903:20)"};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___ADeferredMethPropdef___n_kwmeth__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 1949, LOCATE_parser_prod___ADeferredMethPropdef___n_kwmeth__eq};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  variable0 =  param0;
-  ATTR_parser_nodes___AMethPropdef____n_signature( self) /*ADeferredMethPropdef::_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*/) /*PSignature::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PSignature::parent=*/;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  ATTR_parser_nodes___ADeferredMethPropdef____n_kwmeth(variable[0]) /*ADeferredMethPropdef::_n_kwmeth*/ =  variable[1] /*n*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[0]) /*PNode::parent=*/;
   }
+  return_label198: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___ADeferredMethPropdef___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, "parser_prod::ADeferredMethPropdef::empty_init (src/parser//parser_prod.nit:1907,5--27)"};
-  trace.prev = tracehead; tracehead = &trace;
-  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;
+void parser_prod___ADeferredMethPropdef___replace_child(val_t  self, val_t  param0, val_t  param1) {
+  struct trace_t trace = {NULL, NULL, 2009, LOCATE_parser_prod___ADeferredMethPropdef___replace_child};
+  val_t variable[5];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Local variable */
+  variable[2] =  param1;
+  /* Register variable[3]: Method return value and escape marker */
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ADeferredMethPropdef___replace_child, LOCATE_parser_prod, 2011); nit_exit(1);}
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___PPropdef____n_doc(variable[0]) /*PPropdef::_n_doc*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*PNode::parent=*/;
+      /* Register variable[4]: Result */
+      variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
+      if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ADeferredMethPropdef___replace_child, LOCATE_parser_prod, 2015); nit_exit(1);}
+      ATTR_parser_nodes___PPropdef____n_doc(variable[0]) /*PPropdef::_n_doc*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      ATTR_parser_nodes___PPropdef____n_doc(variable[0]) /*PPropdef::_n_doc*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label199;
+  }
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___AMethPropdef____n_kwredef(variable[0]) /*AMethPropdef::_n_kwredef*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*PNode::parent=*/;
+      /* Register variable[4]: Result */
+      variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
+      if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ADeferredMethPropdef___replace_child, LOCATE_parser_prod, 2025); nit_exit(1);}
+      ATTR_parser_nodes___AMethPropdef____n_kwredef(variable[0]) /*AMethPropdef::_n_kwredef*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      ATTR_parser_nodes___AMethPropdef____n_kwredef(variable[0]) /*AMethPropdef::_n_kwredef*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label199;
+  }
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___AMethPropdef____n_visibility(variable[0]) /*AMethPropdef::_n_visibility*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*PNode::parent=*/;
+      /* Register variable[4]: Result */
+      variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
+      if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ADeferredMethPropdef___replace_child, LOCATE_parser_prod, 2035); nit_exit(1);}
+      ATTR_parser_nodes___AMethPropdef____n_visibility(variable[0]) /*AMethPropdef::_n_visibility*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      ATTR_parser_nodes___AMethPropdef____n_visibility(variable[0]) /*AMethPropdef::_n_visibility*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label199;
+  }
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___ADeferredMethPropdef____n_kwmeth(variable[0]) /*ADeferredMethPropdef::_n_kwmeth*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*PNode::parent=*/;
+      /* Register variable[4]: Result */
+      variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_TKwmeth, ID_TKwmeth)) /*cast TKwmeth*/;
+      if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ADeferredMethPropdef___replace_child, LOCATE_parser_prod, 2045); nit_exit(1);}
+      ATTR_parser_nodes___ADeferredMethPropdef____n_kwmeth(variable[0]) /*ADeferredMethPropdef::_n_kwmeth*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      ATTR_parser_nodes___ADeferredMethPropdef____n_kwmeth(variable[0]) /*ADeferredMethPropdef::_n_kwmeth*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label199;
+  }
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___AMethPropdef____n_methid(variable[0]) /*AMethPropdef::_n_methid*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*PNode::parent=*/;
+      /* Register variable[4]: Result */
+      variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PMethid, ID_PMethid)) /*cast PMethid*/;
+      if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ADeferredMethPropdef___replace_child, LOCATE_parser_prod, 2055); nit_exit(1);}
+      ATTR_parser_nodes___AMethPropdef____n_methid(variable[0]) /*AMethPropdef::_n_methid*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      ATTR_parser_nodes___AMethPropdef____n_methid(variable[0]) /*AMethPropdef::_n_methid*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label199;
+  }
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___AMethPropdef____n_signature(variable[0]) /*AMethPropdef::_n_signature*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*PNode::parent=*/;
+      /* Register variable[4]: Result */
+      variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PSignature, ID_PSignature)) /*cast PSignature*/;
+      if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ADeferredMethPropdef___replace_child, LOCATE_parser_prod, 2065); nit_exit(1);}
+      ATTR_parser_nodes___AMethPropdef____n_signature(variable[0]) /*AMethPropdef::_n_signature*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      ATTR_parser_nodes___AMethPropdef____n_signature(variable[0]) /*AMethPropdef::_n_signature*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label199;
+  }
+  return_label199: while(false);
   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, "parser_prod::ADeferredMethPropdef::init_adeferredmethpropdef (src/parser//parser_prod.nit:1909,5--1940:27)"};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  val_t variable3;
-  val_t variable4;
-  val_t variable5;
-  val_t variable6;
-  trace.prev = tracehead; tracehead = &trace;
-  variable0 =  param0;
-  variable1 =  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) /*ADeferredMethPropdef::_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*/) /*PDoc::==*/)))))));
-  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) /*PDoc::parent=*/;
-  }
-  ATTR_parser_nodes___AMethPropdef____n_kwredef( self) /*ADeferredMethPropdef::_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*/) /*TKwredef::==*/)))))));
-  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) /*TKwredef::parent=*/;
-  }
-  ATTR_parser_nodes___AMethPropdef____n_visibility( self) /*ADeferredMethPropdef::_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*/) /*PVisibility::==*/)))))));
-  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) /*PVisibility::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*/) /*TKwmeth::==*/)))))));
-  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) /*TKwmeth::parent=*/;
-  }
-  ATTR_parser_nodes___AMethPropdef____n_methid( self) /*ADeferredMethPropdef::_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*/) /*PMethid::==*/)))))));
-  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) /*PMethid::parent=*/;
-  }
-  ATTR_parser_nodes___AMethPropdef____n_signature( self) /*ADeferredMethPropdef::_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*/) /*PSignature::==*/)))))));
-  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) /*PSignature::parent=*/;
-  }
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ADeferredMethPropdef].i] = 1;
+void parser_prod___ADeferredMethPropdef___visit_all(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 2074, LOCATE_parser_prod___ADeferredMethPropdef___visit_all};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___PPropdef____n_doc(variable[0]) /*PPropdef::_n_doc*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___PPropdef____n_doc(variable[0]) /*PPropdef::_n_doc*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AMethPropdef____n_kwredef(variable[0]) /*AMethPropdef::_n_kwredef*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AMethPropdef____n_kwredef(variable[0]) /*AMethPropdef::_n_kwredef*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AMethPropdef____n_visibility(variable[0]) /*AMethPropdef::_n_visibility*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AMethPropdef____n_visibility(variable[0]) /*AMethPropdef::_n_visibility*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___ADeferredMethPropdef____n_kwmeth(variable[0]) /*ADeferredMethPropdef::_n_kwmeth*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___ADeferredMethPropdef____n_kwmeth(variable[0]) /*ADeferredMethPropdef::_n_kwmeth*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AMethPropdef____n_methid(variable[0]) /*AMethPropdef::_n_methid*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AMethPropdef____n_methid(variable[0]) /*AMethPropdef::_n_methid*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AMethPropdef____n_signature(variable[0]) /*AMethPropdef::_n_signature*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AMethPropdef____n_signature(variable[0]) /*AMethPropdef::_n_signature*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  return_label200: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___ADeferredMethPropdef___replace_child(val_t  self, val_t  param0, val_t  param1) {
-  struct trace_t trace = {NULL, "parser_prod::ADeferredMethPropdef::replace_child (src/parser//parser_prod.nit:1944,5--2005:18)"};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  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*/) /*PNode::==*/)))))));
-  if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert failed: src/parser//parser_prod.nit:1946,9--32\n"); nit_exit(1);}
-  variable2 = ATTR_parser_nodes___PPropdef____n_doc( self) /*ADeferredMethPropdef::_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*/) /*PDoc::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*PNode::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_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 failed: src/parser//parser_prod.nit:1950,3--27\n"); nit_exit(1);}
-      ATTR_parser_nodes___PPropdef____n_doc( self) /*ADeferredMethPropdef::_n_doc*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___PPropdef____n_doc( self) /*ADeferredMethPropdef::_n_doc*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label181;
-  }
-  variable2 = ATTR_parser_nodes___AMethPropdef____n_kwredef( self) /*ADeferredMethPropdef::_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*/) /*TKwredef::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*PNode::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_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 failed: src/parser//parser_prod.nit:1960,3--31\n"); nit_exit(1);}
-      ATTR_parser_nodes___AMethPropdef____n_kwredef( self) /*ADeferredMethPropdef::_n_kwredef*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___AMethPropdef____n_kwredef( self) /*ADeferredMethPropdef::_n_kwredef*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label181;
-  }
-  variable2 = ATTR_parser_nodes___AMethPropdef____n_visibility( self) /*ADeferredMethPropdef::_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*/) /*PVisibility::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*PNode::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_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 failed: src/parser//parser_prod.nit:1970,3--34\n"); nit_exit(1);}
-      ATTR_parser_nodes___AMethPropdef____n_visibility( self) /*ADeferredMethPropdef::_n_visibility*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___AMethPropdef____n_visibility( self) /*ADeferredMethPropdef::_n_visibility*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label181;
-  }
-  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*/) /*TKwmeth::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*PNode::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_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 failed: src/parser//parser_prod.nit:1980,3--30\n"); 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_label181;
-  }
-  variable2 = ATTR_parser_nodes___AMethPropdef____n_methid( self) /*ADeferredMethPropdef::_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*/) /*PMethid::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*PNode::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_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 failed: src/parser//parser_prod.nit:1990,3--30\n"); nit_exit(1);}
-      ATTR_parser_nodes___AMethPropdef____n_methid( self) /*ADeferredMethPropdef::_n_methid*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___AMethPropdef____n_methid( self) /*ADeferredMethPropdef::_n_methid*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label181;
-  }
-  variable2 = ATTR_parser_nodes___AMethPropdef____n_signature( self) /*ADeferredMethPropdef::_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*/) /*PSignature::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*PNode::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_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 failed: src/parser//parser_prod.nit:2000,3--33\n"); nit_exit(1);}
-      ATTR_parser_nodes___AMethPropdef____n_signature( self) /*ADeferredMethPropdef::_n_signature*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___AMethPropdef____n_signature( self) /*ADeferredMethPropdef::_n_signature*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label181;
-  }
-  return_label181: while(false);
+void parser_prod___ADeferredMethPropdef___visit_all_reverse(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 2096, LOCATE_parser_prod___ADeferredMethPropdef___visit_all_reverse};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___PPropdef____n_doc(variable[0]) /*PPropdef::_n_doc*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___PPropdef____n_doc(variable[0]) /*PPropdef::_n_doc*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AMethPropdef____n_kwredef(variable[0]) /*AMethPropdef::_n_kwredef*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AMethPropdef____n_kwredef(variable[0]) /*AMethPropdef::_n_kwredef*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AMethPropdef____n_visibility(variable[0]) /*AMethPropdef::_n_visibility*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AMethPropdef____n_visibility(variable[0]) /*AMethPropdef::_n_visibility*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___ADeferredMethPropdef____n_kwmeth(variable[0]) /*ADeferredMethPropdef::_n_kwmeth*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___ADeferredMethPropdef____n_kwmeth(variable[0]) /*ADeferredMethPropdef::_n_kwmeth*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AMethPropdef____n_methid(variable[0]) /*AMethPropdef::_n_methid*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AMethPropdef____n_methid(variable[0]) /*AMethPropdef::_n_methid*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AMethPropdef____n_signature(variable[0]) /*AMethPropdef::_n_signature*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AMethPropdef____n_signature(variable[0]) /*AMethPropdef::_n_signature*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  return_label201: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___ADeferredMethPropdef___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::ADeferredMethPropdef::visit_all (src/parser//parser_prod.nit:2009,5--2027:32)"};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___PPropdef____n_doc( self) /*ADeferredMethPropdef::_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*/) /*PDoc::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___PPropdef____n_doc( self) /*ADeferredMethPropdef::_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) /*ADeferredMethPropdef::_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*/) /*TKwredef::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AMethPropdef____n_kwredef( self) /*ADeferredMethPropdef::_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) /*ADeferredMethPropdef::_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*/) /*PVisibility::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AMethPropdef____n_visibility( self) /*ADeferredMethPropdef::_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*/) /*TKwmeth::==*/)))))));
-  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) /*ADeferredMethPropdef::_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*/) /*PMethid::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AMethPropdef____n_methid( self) /*ADeferredMethPropdef::_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) /*ADeferredMethPropdef::_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*/) /*PSignature::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AMethPropdef____n_signature( self) /*ADeferredMethPropdef::_n_signature*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
+void parser_prod___ADeferredMethPropdef___empty_init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 1971, LOCATE_parser_prod___ADeferredMethPropdef___empty_init};
+  val_t variable[2];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ADeferredMethPropdef].i]) return;
+  /* Register variable[1]: Method return value and escape marker */
+  return_label202: while(false);
+  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ADeferredMethPropdef].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser_prod___ADeferredMethPropdef___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::ADeferredMethPropdef::visit_all_reverse (src/parser//parser_prod.nit:2031,5--2049:32)"};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___PPropdef____n_doc( self) /*ADeferredMethPropdef::_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*/) /*PDoc::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___PPropdef____n_doc( self) /*ADeferredMethPropdef::_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) /*ADeferredMethPropdef::_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*/) /*TKwredef::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AMethPropdef____n_kwredef( self) /*ADeferredMethPropdef::_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) /*ADeferredMethPropdef::_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*/) /*PVisibility::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AMethPropdef____n_visibility( self) /*ADeferredMethPropdef::_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*/) /*TKwmeth::==*/)))))));
-  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) /*ADeferredMethPropdef::_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*/) /*PMethid::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AMethPropdef____n_methid( self) /*ADeferredMethPropdef::_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) /*ADeferredMethPropdef::_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*/) /*PSignature::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AMethPropdef____n_signature( self) /*ADeferredMethPropdef::_n_signature*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
+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, 1973, LOCATE_parser_prod___ADeferredMethPropdef___init_adeferredmethpropdef};
+  val_t variable[9];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Local variable */
+  variable[2] =  param1;
+  /* Register variable[3]: Local variable */
+  variable[3] =  param2;
+  /* Register variable[4]: Local variable */
+  variable[4] =  param3;
+  /* Register variable[5]: Local variable */
+  variable[5] =  param4;
+  /* Register variable[6]: Local variable */
+  variable[6] =  param5;
+  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ADeferredMethPropdef].i]) return;
+  /* Register variable[7]: Method return value and escape marker */
+  CALL_parser_prod___ADeferredMethPropdef___empty_init(variable[0])(variable[0], init_table /*YYY*/) /*ADeferredMethPropdef::empty_init*/;
+  ATTR_parser_nodes___PPropdef____n_doc(variable[0]) /*PPropdef::_n_doc*/ =  variable[1] /*n_doc*/;
+  /* Register variable[8]: Result */
+  variable[8] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_doc*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_doc*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n_doc*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_doc*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n_doc*/)( variable[1] /*n_doc*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[8])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n_doc*/)( variable[1] /*n_doc*/, variable[0]) /*PNode::parent=*/;
+  }
+  ATTR_parser_nodes___AMethPropdef____n_kwredef(variable[0]) /*AMethPropdef::_n_kwredef*/ =  variable[2] /*n_kwredef*/;
+  /* Register variable[8]: Result */
+  variable[8] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*n_kwredef*/ ==  NIT_NULL /*null*/) || (( variable[2] /*n_kwredef*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*n_kwredef*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*n_kwredef*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*n_kwredef*/)( variable[2] /*n_kwredef*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[8])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[2] /*n_kwredef*/)( variable[2] /*n_kwredef*/, variable[0]) /*PNode::parent=*/;
+  }
+  ATTR_parser_nodes___AMethPropdef____n_visibility(variable[0]) /*AMethPropdef::_n_visibility*/ =  variable[3] /*n_visibility*/;
+  /* Register variable[8]: Result */
+  variable[8] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[3] /*n_visibility*/ ==  NIT_NULL /*null*/) || (( variable[3] /*n_visibility*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[3] /*n_visibility*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[3] /*n_visibility*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[3] /*n_visibility*/)( variable[3] /*n_visibility*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[8])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[3] /*n_visibility*/)( variable[3] /*n_visibility*/, variable[0]) /*PNode::parent=*/;
+  }
+  ATTR_parser_nodes___ADeferredMethPropdef____n_kwmeth(variable[0]) /*ADeferredMethPropdef::_n_kwmeth*/ =  variable[4] /*n_kwmeth*/;
+  /* Register variable[8]: Result */
+  variable[8] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[4] /*n_kwmeth*/ ==  NIT_NULL /*null*/) || (( variable[4] /*n_kwmeth*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[4] /*n_kwmeth*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[4] /*n_kwmeth*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[4] /*n_kwmeth*/)( variable[4] /*n_kwmeth*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[8])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[4] /*n_kwmeth*/)( variable[4] /*n_kwmeth*/, variable[0]) /*PNode::parent=*/;
+  }
+  ATTR_parser_nodes___AMethPropdef____n_methid(variable[0]) /*AMethPropdef::_n_methid*/ =  variable[5] /*n_methid*/;
+  /* Register variable[8]: Result */
+  variable[8] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[5] /*n_methid*/ ==  NIT_NULL /*null*/) || (( variable[5] /*n_methid*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[5] /*n_methid*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[5] /*n_methid*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[5] /*n_methid*/)( variable[5] /*n_methid*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[8])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[5] /*n_methid*/)( variable[5] /*n_methid*/, variable[0]) /*PNode::parent=*/;
+  }
+  ATTR_parser_nodes___AMethPropdef____n_signature(variable[0]) /*AMethPropdef::_n_signature*/ =  variable[6] /*n_signature*/;
+  /* Register variable[8]: Result */
+  variable[8] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[6] /*n_signature*/ ==  NIT_NULL /*null*/) || (( variable[6] /*n_signature*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[6] /*n_signature*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[6] /*n_signature*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[6] /*n_signature*/)( variable[6] /*n_signature*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[8])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[6] /*n_signature*/)( variable[6] /*n_signature*/, variable[0]) /*PNode::parent=*/;
+  }
+  return_label203: while(false);
+  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ADeferredMethPropdef].i] = 1;
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AInternMethPropdef___n_doc__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AInternMethPropdef::n_doc= (src/parser//parser_prod.nit:2054,5--2058:20)"};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  variable0 =  param0;
-  ATTR_parser_nodes___PPropdef____n_doc( self) /*AInternMethPropdef::_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*/) /*PDoc::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PDoc::parent=*/;
+  struct trace_t trace = {NULL, NULL, 2119, LOCATE_parser_prod___AInternMethPropdef___n_doc__eq};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  ATTR_parser_nodes___PPropdef____n_doc(variable[0]) /*PPropdef::_n_doc*/ =  variable[1] /*n*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[0]) /*PNode::parent=*/;
   }
+  return_label204: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AInternMethPropdef___n_kwredef__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AInternMethPropdef::n_kwredef= (src/parser//parser_prod.nit:2061,5--2065:20)"};
-  val_t variable0;
-  val_t variable1;
+  struct trace_t trace = {NULL, NULL, 2126, LOCATE_parser_prod___AInternMethPropdef___n_kwredef__eq};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  variable0 =  param0;
-  ATTR_parser_nodes___AMethPropdef____n_kwredef( self) /*AInternMethPropdef::_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*/) /*TKwredef::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*TKwredef::parent=*/;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  ATTR_parser_nodes___AMethPropdef____n_kwredef(variable[0]) /*AMethPropdef::_n_kwredef*/ =  variable[1] /*n*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[0]) /*PNode::parent=*/;
   }
+  return_label205: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AInternMethPropdef___n_visibility__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AInternMethPropdef::n_visibility= (src/parser//parser_prod.nit:2068,5--2072:20)"};
-  val_t variable0;
-  val_t variable1;
+  struct trace_t trace = {NULL, NULL, 2133, LOCATE_parser_prod___AInternMethPropdef___n_visibility__eq};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  variable0 =  param0;
-  ATTR_parser_nodes___AMethPropdef____n_visibility( self) /*AInternMethPropdef::_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*/) /*PVisibility::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PVisibility::parent=*/;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  ATTR_parser_nodes___AMethPropdef____n_visibility(variable[0]) /*AMethPropdef::_n_visibility*/ =  variable[1] /*n*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[0]) /*PNode::parent=*/;
   }
+  return_label206: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AInternMethPropdef___n_kwmeth__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AInternMethPropdef::n_kwmeth= (src/parser//parser_prod.nit:2075,5--2079:20)"};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___AInternMethPropdef___n_methid__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 2147, LOCATE_parser_prod___AInternMethPropdef___n_methid__eq};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  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*/) /*TKwmeth::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*TKwmeth::parent=*/;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  ATTR_parser_nodes___AMethPropdef____n_methid(variable[0]) /*AMethPropdef::_n_methid*/ =  variable[1] /*n*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[0]) /*PNode::parent=*/;
   }
+  return_label207: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AInternMethPropdef___n_methid__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AInternMethPropdef::n_methid= (src/parser//parser_prod.nit:2082,5--2086:20)"};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___AInternMethPropdef___n_signature__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 2154, LOCATE_parser_prod___AInternMethPropdef___n_signature__eq};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  variable0 =  param0;
-  ATTR_parser_nodes___AMethPropdef____n_methid( self) /*AInternMethPropdef::_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*/) /*PMethid::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PMethid::parent=*/;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  ATTR_parser_nodes___AMethPropdef____n_signature(variable[0]) /*AMethPropdef::_n_signature*/ =  variable[1] /*n*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[0]) /*PNode::parent=*/;
   }
+  return_label208: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AInternMethPropdef___n_signature__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AInternMethPropdef::n_signature= (src/parser//parser_prod.nit:2089,5--2093:20)"};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___AInternMethPropdef___n_kwmeth__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 2140, LOCATE_parser_prod___AInternMethPropdef___n_kwmeth__eq};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  variable0 =  param0;
-  ATTR_parser_nodes___AMethPropdef____n_signature( self) /*AInternMethPropdef::_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*/) /*PSignature::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PSignature::parent=*/;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  ATTR_parser_nodes___AInternMethPropdef____n_kwmeth(variable[0]) /*AInternMethPropdef::_n_kwmeth*/ =  variable[1] /*n*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[0]) /*PNode::parent=*/;
   }
+  return_label209: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AInternMethPropdef___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, "parser_prod::AInternMethPropdef::empty_init (src/parser//parser_prod.nit:2097,5--27)"};
-  trace.prev = tracehead; tracehead = &trace;
-  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;
+void parser_prod___AInternMethPropdef___replace_child(val_t  self, val_t  param0, val_t  param1) {
+  struct trace_t trace = {NULL, NULL, 2200, LOCATE_parser_prod___AInternMethPropdef___replace_child};
+  val_t variable[5];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Local variable */
+  variable[2] =  param1;
+  /* Register variable[3]: Method return value and escape marker */
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AInternMethPropdef___replace_child, LOCATE_parser_prod, 2202); nit_exit(1);}
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___PPropdef____n_doc(variable[0]) /*PPropdef::_n_doc*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*PNode::parent=*/;
+      /* Register variable[4]: Result */
+      variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
+      if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AInternMethPropdef___replace_child, LOCATE_parser_prod, 2206); nit_exit(1);}
+      ATTR_parser_nodes___PPropdef____n_doc(variable[0]) /*PPropdef::_n_doc*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      ATTR_parser_nodes___PPropdef____n_doc(variable[0]) /*PPropdef::_n_doc*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label210;
+  }
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___AMethPropdef____n_kwredef(variable[0]) /*AMethPropdef::_n_kwredef*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*PNode::parent=*/;
+      /* Register variable[4]: Result */
+      variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
+      if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AInternMethPropdef___replace_child, LOCATE_parser_prod, 2216); nit_exit(1);}
+      ATTR_parser_nodes___AMethPropdef____n_kwredef(variable[0]) /*AMethPropdef::_n_kwredef*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      ATTR_parser_nodes___AMethPropdef____n_kwredef(variable[0]) /*AMethPropdef::_n_kwredef*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label210;
+  }
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___AMethPropdef____n_visibility(variable[0]) /*AMethPropdef::_n_visibility*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*PNode::parent=*/;
+      /* Register variable[4]: Result */
+      variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
+      if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AInternMethPropdef___replace_child, LOCATE_parser_prod, 2226); nit_exit(1);}
+      ATTR_parser_nodes___AMethPropdef____n_visibility(variable[0]) /*AMethPropdef::_n_visibility*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      ATTR_parser_nodes___AMethPropdef____n_visibility(variable[0]) /*AMethPropdef::_n_visibility*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label210;
+  }
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___AInternMethPropdef____n_kwmeth(variable[0]) /*AInternMethPropdef::_n_kwmeth*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*PNode::parent=*/;
+      /* Register variable[4]: Result */
+      variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_TKwmeth, ID_TKwmeth)) /*cast TKwmeth*/;
+      if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AInternMethPropdef___replace_child, LOCATE_parser_prod, 2236); nit_exit(1);}
+      ATTR_parser_nodes___AInternMethPropdef____n_kwmeth(variable[0]) /*AInternMethPropdef::_n_kwmeth*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      ATTR_parser_nodes___AInternMethPropdef____n_kwmeth(variable[0]) /*AInternMethPropdef::_n_kwmeth*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label210;
+  }
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___AMethPropdef____n_methid(variable[0]) /*AMethPropdef::_n_methid*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*PNode::parent=*/;
+      /* Register variable[4]: Result */
+      variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PMethid, ID_PMethid)) /*cast PMethid*/;
+      if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AInternMethPropdef___replace_child, LOCATE_parser_prod, 2246); nit_exit(1);}
+      ATTR_parser_nodes___AMethPropdef____n_methid(variable[0]) /*AMethPropdef::_n_methid*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      ATTR_parser_nodes___AMethPropdef____n_methid(variable[0]) /*AMethPropdef::_n_methid*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label210;
+  }
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___AMethPropdef____n_signature(variable[0]) /*AMethPropdef::_n_signature*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*PNode::parent=*/;
+      /* Register variable[4]: Result */
+      variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PSignature, ID_PSignature)) /*cast PSignature*/;
+      if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AInternMethPropdef___replace_child, LOCATE_parser_prod, 2256); nit_exit(1);}
+      ATTR_parser_nodes___AMethPropdef____n_signature(variable[0]) /*AMethPropdef::_n_signature*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      ATTR_parser_nodes___AMethPropdef____n_signature(variable[0]) /*AMethPropdef::_n_signature*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label210;
+  }
+  return_label210: while(false);
   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, "parser_prod::AInternMethPropdef::init_ainternmethpropdef (src/parser//parser_prod.nit:2099,5--2130:27)"};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  val_t variable3;
-  val_t variable4;
-  val_t variable5;
-  val_t variable6;
-  trace.prev = tracehead; tracehead = &trace;
-  variable0 =  param0;
-  variable1 =  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) /*AInternMethPropdef::_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*/) /*PDoc::==*/)))))));
-  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) /*PDoc::parent=*/;
-  }
-  ATTR_parser_nodes___AMethPropdef____n_kwredef( self) /*AInternMethPropdef::_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*/) /*TKwredef::==*/)))))));
-  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) /*TKwredef::parent=*/;
-  }
-  ATTR_parser_nodes___AMethPropdef____n_visibility( self) /*AInternMethPropdef::_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*/) /*PVisibility::==*/)))))));
-  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) /*PVisibility::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*/) /*TKwmeth::==*/)))))));
-  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) /*TKwmeth::parent=*/;
-  }
-  ATTR_parser_nodes___AMethPropdef____n_methid( self) /*AInternMethPropdef::_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*/) /*PMethid::==*/)))))));
-  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) /*PMethid::parent=*/;
-  }
-  ATTR_parser_nodes___AMethPropdef____n_signature( self) /*AInternMethPropdef::_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*/) /*PSignature::==*/)))))));
-  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) /*PSignature::parent=*/;
-  }
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AInternMethPropdef].i] = 1;
+void parser_prod___AInternMethPropdef___visit_all(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 2265, LOCATE_parser_prod___AInternMethPropdef___visit_all};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___PPropdef____n_doc(variable[0]) /*PPropdef::_n_doc*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___PPropdef____n_doc(variable[0]) /*PPropdef::_n_doc*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AMethPropdef____n_kwredef(variable[0]) /*AMethPropdef::_n_kwredef*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AMethPropdef____n_kwredef(variable[0]) /*AMethPropdef::_n_kwredef*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AMethPropdef____n_visibility(variable[0]) /*AMethPropdef::_n_visibility*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AMethPropdef____n_visibility(variable[0]) /*AMethPropdef::_n_visibility*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AInternMethPropdef____n_kwmeth(variable[0]) /*AInternMethPropdef::_n_kwmeth*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AInternMethPropdef____n_kwmeth(variable[0]) /*AInternMethPropdef::_n_kwmeth*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AMethPropdef____n_methid(variable[0]) /*AMethPropdef::_n_methid*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AMethPropdef____n_methid(variable[0]) /*AMethPropdef::_n_methid*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AMethPropdef____n_signature(variable[0]) /*AMethPropdef::_n_signature*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AMethPropdef____n_signature(variable[0]) /*AMethPropdef::_n_signature*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  return_label211: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AInternMethPropdef___replace_child(val_t  self, val_t  param0, val_t  param1) {
-  struct trace_t trace = {NULL, "parser_prod::AInternMethPropdef::replace_child (src/parser//parser_prod.nit:2134,5--2195:18)"};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  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*/) /*PNode::==*/)))))));
-  if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert failed: src/parser//parser_prod.nit:2136,9--32\n"); nit_exit(1);}
-  variable2 = ATTR_parser_nodes___PPropdef____n_doc( self) /*AInternMethPropdef::_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*/) /*PDoc::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*PNode::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_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 failed: src/parser//parser_prod.nit:2140,3--27\n"); nit_exit(1);}
-      ATTR_parser_nodes___PPropdef____n_doc( self) /*AInternMethPropdef::_n_doc*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___PPropdef____n_doc( self) /*AInternMethPropdef::_n_doc*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label192;
-  }
-  variable2 = ATTR_parser_nodes___AMethPropdef____n_kwredef( self) /*AInternMethPropdef::_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*/) /*TKwredef::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*PNode::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_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 failed: src/parser//parser_prod.nit:2150,3--31\n"); nit_exit(1);}
-      ATTR_parser_nodes___AMethPropdef____n_kwredef( self) /*AInternMethPropdef::_n_kwredef*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___AMethPropdef____n_kwredef( self) /*AInternMethPropdef::_n_kwredef*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label192;
-  }
-  variable2 = ATTR_parser_nodes___AMethPropdef____n_visibility( self) /*AInternMethPropdef::_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*/) /*PVisibility::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*PNode::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_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 failed: src/parser//parser_prod.nit:2160,3--34\n"); nit_exit(1);}
-      ATTR_parser_nodes___AMethPropdef____n_visibility( self) /*AInternMethPropdef::_n_visibility*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___AMethPropdef____n_visibility( self) /*AInternMethPropdef::_n_visibility*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label192;
-  }
-  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*/) /*TKwmeth::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*PNode::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_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 failed: src/parser//parser_prod.nit:2170,3--30\n"); 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_label192;
-  }
-  variable2 = ATTR_parser_nodes___AMethPropdef____n_methid( self) /*AInternMethPropdef::_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*/) /*PMethid::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*PNode::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_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 failed: src/parser//parser_prod.nit:2180,3--30\n"); nit_exit(1);}
-      ATTR_parser_nodes___AMethPropdef____n_methid( self) /*AInternMethPropdef::_n_methid*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___AMethPropdef____n_methid( self) /*AInternMethPropdef::_n_methid*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label192;
-  }
-  variable2 = ATTR_parser_nodes___AMethPropdef____n_signature( self) /*AInternMethPropdef::_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*/) /*PSignature::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*PNode::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_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 failed: src/parser//parser_prod.nit:2190,3--33\n"); nit_exit(1);}
-      ATTR_parser_nodes___AMethPropdef____n_signature( self) /*AInternMethPropdef::_n_signature*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___AMethPropdef____n_signature( self) /*AInternMethPropdef::_n_signature*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label192;
-  }
-  return_label192: while(false);
+void parser_prod___AInternMethPropdef___visit_all_reverse(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 2287, LOCATE_parser_prod___AInternMethPropdef___visit_all_reverse};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___PPropdef____n_doc(variable[0]) /*PPropdef::_n_doc*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___PPropdef____n_doc(variable[0]) /*PPropdef::_n_doc*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AMethPropdef____n_kwredef(variable[0]) /*AMethPropdef::_n_kwredef*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AMethPropdef____n_kwredef(variable[0]) /*AMethPropdef::_n_kwredef*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AMethPropdef____n_visibility(variable[0]) /*AMethPropdef::_n_visibility*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AMethPropdef____n_visibility(variable[0]) /*AMethPropdef::_n_visibility*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AInternMethPropdef____n_kwmeth(variable[0]) /*AInternMethPropdef::_n_kwmeth*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AInternMethPropdef____n_kwmeth(variable[0]) /*AInternMethPropdef::_n_kwmeth*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AMethPropdef____n_methid(variable[0]) /*AMethPropdef::_n_methid*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AMethPropdef____n_methid(variable[0]) /*AMethPropdef::_n_methid*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AMethPropdef____n_signature(variable[0]) /*AMethPropdef::_n_signature*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AMethPropdef____n_signature(variable[0]) /*AMethPropdef::_n_signature*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  return_label212: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AInternMethPropdef___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AInternMethPropdef::visit_all (src/parser//parser_prod.nit:2199,5--2217:32)"};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___PPropdef____n_doc( self) /*AInternMethPropdef::_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*/) /*PDoc::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___PPropdef____n_doc( self) /*AInternMethPropdef::_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) /*AInternMethPropdef::_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*/) /*TKwredef::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AMethPropdef____n_kwredef( self) /*AInternMethPropdef::_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) /*AInternMethPropdef::_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*/) /*PVisibility::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AMethPropdef____n_visibility( self) /*AInternMethPropdef::_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*/) /*TKwmeth::==*/)))))));
-  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) /*AInternMethPropdef::_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*/) /*PMethid::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AMethPropdef____n_methid( self) /*AInternMethPropdef::_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) /*AInternMethPropdef::_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*/) /*PSignature::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AMethPropdef____n_signature( self) /*AInternMethPropdef::_n_signature*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
+void parser_prod___AInternMethPropdef___empty_init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 2162, LOCATE_parser_prod___AInternMethPropdef___empty_init};
+  val_t variable[2];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AInternMethPropdef].i]) return;
+  /* Register variable[1]: Method return value and escape marker */
+  return_label213: while(false);
+  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AInternMethPropdef].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AInternMethPropdef___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AInternMethPropdef::visit_all_reverse (src/parser//parser_prod.nit:2221,5--2239:32)"};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___PPropdef____n_doc( self) /*AInternMethPropdef::_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*/) /*PDoc::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___PPropdef____n_doc( self) /*AInternMethPropdef::_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) /*AInternMethPropdef::_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*/) /*TKwredef::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AMethPropdef____n_kwredef( self) /*AInternMethPropdef::_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) /*AInternMethPropdef::_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*/) /*PVisibility::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AMethPropdef____n_visibility( self) /*AInternMethPropdef::_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*/) /*TKwmeth::==*/)))))));
-  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) /*AInternMethPropdef::_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*/) /*PMethid::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AMethPropdef____n_methid( self) /*AInternMethPropdef::_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) /*AInternMethPropdef::_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*/) /*PSignature::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AMethPropdef____n_signature( self) /*AInternMethPropdef::_n_signature*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
+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, 2164, LOCATE_parser_prod___AInternMethPropdef___init_ainternmethpropdef};
+  val_t variable[9];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Local variable */
+  variable[2] =  param1;
+  /* Register variable[3]: Local variable */
+  variable[3] =  param2;
+  /* Register variable[4]: Local variable */
+  variable[4] =  param3;
+  /* Register variable[5]: Local variable */
+  variable[5] =  param4;
+  /* Register variable[6]: Local variable */
+  variable[6] =  param5;
+  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AInternMethPropdef].i]) return;
+  /* Register variable[7]: Method return value and escape marker */
+  CALL_parser_prod___AInternMethPropdef___empty_init(variable[0])(variable[0], init_table /*YYY*/) /*AInternMethPropdef::empty_init*/;
+  ATTR_parser_nodes___PPropdef____n_doc(variable[0]) /*PPropdef::_n_doc*/ =  variable[1] /*n_doc*/;
+  /* Register variable[8]: Result */
+  variable[8] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_doc*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_doc*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n_doc*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_doc*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n_doc*/)( variable[1] /*n_doc*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[8])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n_doc*/)( variable[1] /*n_doc*/, variable[0]) /*PNode::parent=*/;
+  }
+  ATTR_parser_nodes___AMethPropdef____n_kwredef(variable[0]) /*AMethPropdef::_n_kwredef*/ =  variable[2] /*n_kwredef*/;
+  /* Register variable[8]: Result */
+  variable[8] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*n_kwredef*/ ==  NIT_NULL /*null*/) || (( variable[2] /*n_kwredef*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*n_kwredef*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*n_kwredef*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*n_kwredef*/)( variable[2] /*n_kwredef*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[8])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[2] /*n_kwredef*/)( variable[2] /*n_kwredef*/, variable[0]) /*PNode::parent=*/;
+  }
+  ATTR_parser_nodes___AMethPropdef____n_visibility(variable[0]) /*AMethPropdef::_n_visibility*/ =  variable[3] /*n_visibility*/;
+  /* Register variable[8]: Result */
+  variable[8] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[3] /*n_visibility*/ ==  NIT_NULL /*null*/) || (( variable[3] /*n_visibility*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[3] /*n_visibility*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[3] /*n_visibility*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[3] /*n_visibility*/)( variable[3] /*n_visibility*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[8])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[3] /*n_visibility*/)( variable[3] /*n_visibility*/, variable[0]) /*PNode::parent=*/;
+  }
+  ATTR_parser_nodes___AInternMethPropdef____n_kwmeth(variable[0]) /*AInternMethPropdef::_n_kwmeth*/ =  variable[4] /*n_kwmeth*/;
+  /* Register variable[8]: Result */
+  variable[8] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[4] /*n_kwmeth*/ ==  NIT_NULL /*null*/) || (( variable[4] /*n_kwmeth*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[4] /*n_kwmeth*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[4] /*n_kwmeth*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[4] /*n_kwmeth*/)( variable[4] /*n_kwmeth*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[8])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[4] /*n_kwmeth*/)( variable[4] /*n_kwmeth*/, variable[0]) /*PNode::parent=*/;
+  }
+  ATTR_parser_nodes___AMethPropdef____n_methid(variable[0]) /*AMethPropdef::_n_methid*/ =  variable[5] /*n_methid*/;
+  /* Register variable[8]: Result */
+  variable[8] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[5] /*n_methid*/ ==  NIT_NULL /*null*/) || (( variable[5] /*n_methid*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[5] /*n_methid*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[5] /*n_methid*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[5] /*n_methid*/)( variable[5] /*n_methid*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[8])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[5] /*n_methid*/)( variable[5] /*n_methid*/, variable[0]) /*PNode::parent=*/;
+  }
+  ATTR_parser_nodes___AMethPropdef____n_signature(variable[0]) /*AMethPropdef::_n_signature*/ =  variable[6] /*n_signature*/;
+  /* Register variable[8]: Result */
+  variable[8] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[6] /*n_signature*/ ==  NIT_NULL /*null*/) || (( variable[6] /*n_signature*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[6] /*n_signature*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[6] /*n_signature*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[6] /*n_signature*/)( variable[6] /*n_signature*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[8])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[6] /*n_signature*/)( variable[6] /*n_signature*/, variable[0]) /*PNode::parent=*/;
+  }
+  return_label214: while(false);
+  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AInternMethPropdef].i] = 1;
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AExternMethPropdef___n_doc__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AExternMethPropdef::n_doc= (src/parser//parser_prod.nit:2244,5--2248:20)"};
-  val_t variable0;
-  val_t variable1;
+  struct trace_t trace = {NULL, NULL, 2310, LOCATE_parser_prod___AExternMethPropdef___n_doc__eq};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  variable0 =  param0;
-  ATTR_parser_nodes___PPropdef____n_doc( self) /*AExternMethPropdef::_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*/) /*PDoc::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PDoc::parent=*/;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  ATTR_parser_nodes___PPropdef____n_doc(variable[0]) /*PPropdef::_n_doc*/ =  variable[1] /*n*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[0]) /*PNode::parent=*/;
   }
+  return_label215: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AExternMethPropdef___n_kwredef__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AExternMethPropdef::n_kwredef= (src/parser//parser_prod.nit:2251,5--2255:20)"};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  variable0 =  param0;
-  ATTR_parser_nodes___AMethPropdef____n_kwredef( self) /*AExternMethPropdef::_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*/) /*TKwredef::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*TKwredef::parent=*/;
+  struct trace_t trace = {NULL, NULL, 2317, LOCATE_parser_prod___AExternMethPropdef___n_kwredef__eq};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  ATTR_parser_nodes___AMethPropdef____n_kwredef(variable[0]) /*AMethPropdef::_n_kwredef*/ =  variable[1] /*n*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[0]) /*PNode::parent=*/;
   }
+  return_label216: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AExternMethPropdef___n_visibility__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AExternMethPropdef::n_visibility= (src/parser//parser_prod.nit:2258,5--2262:20)"};
-  val_t variable0;
-  val_t variable1;
+  struct trace_t trace = {NULL, NULL, 2324, LOCATE_parser_prod___AExternMethPropdef___n_visibility__eq};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  variable0 =  param0;
-  ATTR_parser_nodes___AMethPropdef____n_visibility( self) /*AExternMethPropdef::_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*/) /*PVisibility::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PVisibility::parent=*/;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  ATTR_parser_nodes___AMethPropdef____n_visibility(variable[0]) /*AMethPropdef::_n_visibility*/ =  variable[1] /*n*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[0]) /*PNode::parent=*/;
   }
+  return_label217: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AExternMethPropdef___n_kwmeth__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AExternMethPropdef::n_kwmeth= (src/parser//parser_prod.nit:2265,5--2269:20)"};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___AExternMethPropdef___n_methid__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 2338, LOCATE_parser_prod___AExternMethPropdef___n_methid__eq};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  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*/) /*TKwmeth::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*TKwmeth::parent=*/;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  ATTR_parser_nodes___AMethPropdef____n_methid(variable[0]) /*AMethPropdef::_n_methid*/ =  variable[1] /*n*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[0]) /*PNode::parent=*/;
   }
+  return_label218: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AExternMethPropdef___n_methid__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AExternMethPropdef::n_methid= (src/parser//parser_prod.nit:2272,5--2276:20)"};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___AExternMethPropdef___n_signature__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 2345, LOCATE_parser_prod___AExternMethPropdef___n_signature__eq};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  variable0 =  param0;
-  ATTR_parser_nodes___AMethPropdef____n_methid( self) /*AExternMethPropdef::_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*/) /*PMethid::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PMethid::parent=*/;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  ATTR_parser_nodes___AMethPropdef____n_signature(variable[0]) /*AMethPropdef::_n_signature*/ =  variable[1] /*n*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[0]) /*PNode::parent=*/;
   }
+  return_label219: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AExternMethPropdef___n_signature__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AExternMethPropdef::n_signature= (src/parser//parser_prod.nit:2279,5--2283:20)"};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___AExternMethPropdef___n_kwmeth__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 2331, LOCATE_parser_prod___AExternMethPropdef___n_kwmeth__eq};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  variable0 =  param0;
-  ATTR_parser_nodes___AMethPropdef____n_signature( self) /*AExternMethPropdef::_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*/) /*PSignature::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PSignature::parent=*/;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  ATTR_parser_nodes___AExternMethPropdef____n_kwmeth(variable[0]) /*AExternMethPropdef::_n_kwmeth*/ =  variable[1] /*n*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[0]) /*PNode::parent=*/;
   }
+  return_label220: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AExternMethPropdef___n_extern__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AExternMethPropdef::n_extern= (src/parser//parser_prod.nit:2286,5--2290:20)"};
-  val_t variable0;
-  val_t variable1;
+  struct trace_t trace = {NULL, NULL, 2352, LOCATE_parser_prod___AExternMethPropdef___n_extern__eq};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  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*/) /*TString::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*TString::parent=*/;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  ATTR_parser_nodes___AExternMethPropdef____n_extern(variable[0]) /*AExternMethPropdef::_n_extern*/ =  variable[1] /*n*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[0]) /*PNode::parent=*/;
   }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AExternMethPropdef___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, "parser_prod::AExternMethPropdef::empty_init (src/parser//parser_prod.nit:2294,5--27)"};
-  trace.prev = tracehead; tracehead = &trace;
-  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, "parser_prod::AExternMethPropdef::init_aexternmethpropdef (src/parser//parser_prod.nit:2296,5--2332:24)"};
-  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;
-  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) /*AExternMethPropdef::_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*/) /*PDoc::==*/)))))));
-  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) /*PDoc::parent=*/;
-  }
-  ATTR_parser_nodes___AMethPropdef____n_kwredef( self) /*AExternMethPropdef::_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*/) /*TKwredef::==*/)))))));
-  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) /*TKwredef::parent=*/;
-  }
-  ATTR_parser_nodes___AMethPropdef____n_visibility( self) /*AExternMethPropdef::_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*/) /*PVisibility::==*/)))))));
-  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) /*PVisibility::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*/) /*TKwmeth::==*/)))))));
-  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) /*TKwmeth::parent=*/;
-  }
-  ATTR_parser_nodes___AMethPropdef____n_methid( self) /*AExternMethPropdef::_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*/) /*PMethid::==*/)))))));
-  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) /*PMethid::parent=*/;
-  }
-  ATTR_parser_nodes___AMethPropdef____n_signature( self) /*AExternMethPropdef::_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*/) /*PSignature::==*/)))))));
-  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) /*PSignature::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*/) /*TString::==*/)))))));
-  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) /*TString::parent=*/;
-  }
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AExternMethPropdef].i] = 1;
+  return_label221: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AExternMethPropdef___replace_child(val_t  self, val_t  param0, val_t  param1) {
-  struct trace_t trace = {NULL, "parser_prod::AExternMethPropdef::replace_child (src/parser//parser_prod.nit:2336,5--2407:18)"};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  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*/) /*PNode::==*/)))))));
-  if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert failed: src/parser//parser_prod.nit:2338,9--32\n"); nit_exit(1);}
-  variable2 = ATTR_parser_nodes___PPropdef____n_doc( self) /*AExternMethPropdef::_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*/) /*PDoc::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*PNode::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_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 failed: src/parser//parser_prod.nit:2342,3--27\n"); nit_exit(1);}
-      ATTR_parser_nodes___PPropdef____n_doc( self) /*AExternMethPropdef::_n_doc*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___PPropdef____n_doc( self) /*AExternMethPropdef::_n_doc*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label204;
-  }
-  variable2 = ATTR_parser_nodes___AMethPropdef____n_kwredef( self) /*AExternMethPropdef::_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*/) /*TKwredef::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*PNode::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_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 failed: src/parser//parser_prod.nit:2352,3--31\n"); nit_exit(1);}
-      ATTR_parser_nodes___AMethPropdef____n_kwredef( self) /*AExternMethPropdef::_n_kwredef*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___AMethPropdef____n_kwredef( self) /*AExternMethPropdef::_n_kwredef*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label204;
-  }
-  variable2 = ATTR_parser_nodes___AMethPropdef____n_visibility( self) /*AExternMethPropdef::_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*/) /*PVisibility::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*PNode::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_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 failed: src/parser//parser_prod.nit:2362,3--34\n"); nit_exit(1);}
-      ATTR_parser_nodes___AMethPropdef____n_visibility( self) /*AExternMethPropdef::_n_visibility*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___AMethPropdef____n_visibility( self) /*AExternMethPropdef::_n_visibility*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label204;
-  }
-  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*/) /*TKwmeth::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*PNode::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_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 failed: src/parser//parser_prod.nit:2372,3--30\n"); 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_label204;
-  }
-  variable2 = ATTR_parser_nodes___AMethPropdef____n_methid( self) /*AExternMethPropdef::_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*/) /*PMethid::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*PNode::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_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 failed: src/parser//parser_prod.nit:2382,3--30\n"); nit_exit(1);}
-      ATTR_parser_nodes___AMethPropdef____n_methid( self) /*AExternMethPropdef::_n_methid*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___AMethPropdef____n_methid( self) /*AExternMethPropdef::_n_methid*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label204;
-  }
-  variable2 = ATTR_parser_nodes___AMethPropdef____n_signature( self) /*AExternMethPropdef::_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*/) /*PSignature::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*PNode::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_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 failed: src/parser//parser_prod.nit:2392,3--33\n"); nit_exit(1);}
-      ATTR_parser_nodes___AMethPropdef____n_signature( self) /*AExternMethPropdef::_n_signature*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___AMethPropdef____n_signature( self) /*AExternMethPropdef::_n_signature*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label204;
-  }
-  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*/) /*TString::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*PNode::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_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 failed: src/parser//parser_prod.nit:2402,3--30\n"); 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_label204;
+  struct trace_t trace = {NULL, NULL, 2403, LOCATE_parser_prod___AExternMethPropdef___replace_child};
+  val_t variable[5];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Local variable */
+  variable[2] =  param1;
+  /* Register variable[3]: Method return value and escape marker */
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AExternMethPropdef___replace_child, LOCATE_parser_prod, 2405); nit_exit(1);}
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___PPropdef____n_doc(variable[0]) /*PPropdef::_n_doc*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*PNode::parent=*/;
+      /* Register variable[4]: Result */
+      variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
+      if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AExternMethPropdef___replace_child, LOCATE_parser_prod, 2409); nit_exit(1);}
+      ATTR_parser_nodes___PPropdef____n_doc(variable[0]) /*PPropdef::_n_doc*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      ATTR_parser_nodes___PPropdef____n_doc(variable[0]) /*PPropdef::_n_doc*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label222;
+  }
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___AMethPropdef____n_kwredef(variable[0]) /*AMethPropdef::_n_kwredef*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*PNode::parent=*/;
+      /* Register variable[4]: Result */
+      variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
+      if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AExternMethPropdef___replace_child, LOCATE_parser_prod, 2419); nit_exit(1);}
+      ATTR_parser_nodes___AMethPropdef____n_kwredef(variable[0]) /*AMethPropdef::_n_kwredef*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      ATTR_parser_nodes___AMethPropdef____n_kwredef(variable[0]) /*AMethPropdef::_n_kwredef*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label222;
+  }
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___AMethPropdef____n_visibility(variable[0]) /*AMethPropdef::_n_visibility*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*PNode::parent=*/;
+      /* Register variable[4]: Result */
+      variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
+      if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AExternMethPropdef___replace_child, LOCATE_parser_prod, 2429); nit_exit(1);}
+      ATTR_parser_nodes___AMethPropdef____n_visibility(variable[0]) /*AMethPropdef::_n_visibility*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      ATTR_parser_nodes___AMethPropdef____n_visibility(variable[0]) /*AMethPropdef::_n_visibility*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label222;
+  }
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___AExternMethPropdef____n_kwmeth(variable[0]) /*AExternMethPropdef::_n_kwmeth*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*PNode::parent=*/;
+      /* Register variable[4]: Result */
+      variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_TKwmeth, ID_TKwmeth)) /*cast TKwmeth*/;
+      if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AExternMethPropdef___replace_child, LOCATE_parser_prod, 2439); nit_exit(1);}
+      ATTR_parser_nodes___AExternMethPropdef____n_kwmeth(variable[0]) /*AExternMethPropdef::_n_kwmeth*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      ATTR_parser_nodes___AExternMethPropdef____n_kwmeth(variable[0]) /*AExternMethPropdef::_n_kwmeth*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label222;
+  }
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___AMethPropdef____n_methid(variable[0]) /*AMethPropdef::_n_methid*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*PNode::parent=*/;
+      /* Register variable[4]: Result */
+      variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PMethid, ID_PMethid)) /*cast PMethid*/;
+      if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AExternMethPropdef___replace_child, LOCATE_parser_prod, 2449); nit_exit(1);}
+      ATTR_parser_nodes___AMethPropdef____n_methid(variable[0]) /*AMethPropdef::_n_methid*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      ATTR_parser_nodes___AMethPropdef____n_methid(variable[0]) /*AMethPropdef::_n_methid*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label222;
+  }
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___AMethPropdef____n_signature(variable[0]) /*AMethPropdef::_n_signature*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*PNode::parent=*/;
+      /* Register variable[4]: Result */
+      variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PSignature, ID_PSignature)) /*cast PSignature*/;
+      if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AExternMethPropdef___replace_child, LOCATE_parser_prod, 2459); nit_exit(1);}
+      ATTR_parser_nodes___AMethPropdef____n_signature(variable[0]) /*AMethPropdef::_n_signature*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      ATTR_parser_nodes___AMethPropdef____n_signature(variable[0]) /*AMethPropdef::_n_signature*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label222;
+  }
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___AExternMethPropdef____n_extern(variable[0]) /*AExternMethPropdef::_n_extern*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*PNode::parent=*/;
+      /* Register variable[4]: Result */
+      variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_TString, ID_TString)) /*cast TString*/;
+      if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AExternMethPropdef___replace_child, LOCATE_parser_prod, 2469); nit_exit(1);}
+      ATTR_parser_nodes___AExternMethPropdef____n_extern(variable[0]) /*AExternMethPropdef::_n_extern*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      ATTR_parser_nodes___AExternMethPropdef____n_extern(variable[0]) /*AExternMethPropdef::_n_extern*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label222;
   }
-  return_label204: while(false);
+  return_label222: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AExternMethPropdef___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AExternMethPropdef::visit_all (src/parser//parser_prod.nit:2411,5--2432:29)"};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___PPropdef____n_doc( self) /*AExternMethPropdef::_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*/) /*PDoc::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___PPropdef____n_doc( self) /*AExternMethPropdef::_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) /*AExternMethPropdef::_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*/) /*TKwredef::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AMethPropdef____n_kwredef( self) /*AExternMethPropdef::_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) /*AExternMethPropdef::_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*/) /*PVisibility::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AMethPropdef____n_visibility( self) /*AExternMethPropdef::_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*/) /*TKwmeth::==*/)))))));
-  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) /*AExternMethPropdef::_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*/) /*PMethid::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AMethPropdef____n_methid( self) /*AExternMethPropdef::_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) /*AExternMethPropdef::_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*/) /*PSignature::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AMethPropdef____n_signature( self) /*AExternMethPropdef::_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*/) /*TString::==*/)))))));
-  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*/;
-  }
+  struct trace_t trace = {NULL, NULL, 2478, LOCATE_parser_prod___AExternMethPropdef___visit_all};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___PPropdef____n_doc(variable[0]) /*PPropdef::_n_doc*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___PPropdef____n_doc(variable[0]) /*PPropdef::_n_doc*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AMethPropdef____n_kwredef(variable[0]) /*AMethPropdef::_n_kwredef*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AMethPropdef____n_kwredef(variable[0]) /*AMethPropdef::_n_kwredef*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AMethPropdef____n_visibility(variable[0]) /*AMethPropdef::_n_visibility*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AMethPropdef____n_visibility(variable[0]) /*AMethPropdef::_n_visibility*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AExternMethPropdef____n_kwmeth(variable[0]) /*AExternMethPropdef::_n_kwmeth*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AExternMethPropdef____n_kwmeth(variable[0]) /*AExternMethPropdef::_n_kwmeth*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AMethPropdef____n_methid(variable[0]) /*AMethPropdef::_n_methid*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AMethPropdef____n_methid(variable[0]) /*AMethPropdef::_n_methid*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AMethPropdef____n_signature(variable[0]) /*AMethPropdef::_n_signature*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AMethPropdef____n_signature(variable[0]) /*AMethPropdef::_n_signature*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AExternMethPropdef____n_extern(variable[0]) /*AExternMethPropdef::_n_extern*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AExternMethPropdef____n_extern(variable[0]) /*AExternMethPropdef::_n_extern*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  return_label223: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AExternMethPropdef___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AExternMethPropdef::visit_all_reverse (src/parser//parser_prod.nit:2436,5--2457:29)"};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___PPropdef____n_doc( self) /*AExternMethPropdef::_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*/) /*PDoc::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___PPropdef____n_doc( self) /*AExternMethPropdef::_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) /*AExternMethPropdef::_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*/) /*TKwredef::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AMethPropdef____n_kwredef( self) /*AExternMethPropdef::_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) /*AExternMethPropdef::_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*/) /*PVisibility::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AMethPropdef____n_visibility( self) /*AExternMethPropdef::_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*/) /*TKwmeth::==*/)))))));
-  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) /*AExternMethPropdef::_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*/) /*PMethid::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AMethPropdef____n_methid( self) /*AExternMethPropdef::_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) /*AExternMethPropdef::_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*/) /*PSignature::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AMethPropdef____n_signature( self) /*AExternMethPropdef::_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*/) /*TString::==*/)))))));
-  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*/;
-  }
+  struct trace_t trace = {NULL, NULL, 2503, LOCATE_parser_prod___AExternMethPropdef___visit_all_reverse};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___PPropdef____n_doc(variable[0]) /*PPropdef::_n_doc*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___PPropdef____n_doc(variable[0]) /*PPropdef::_n_doc*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AMethPropdef____n_kwredef(variable[0]) /*AMethPropdef::_n_kwredef*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AMethPropdef____n_kwredef(variable[0]) /*AMethPropdef::_n_kwredef*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AMethPropdef____n_visibility(variable[0]) /*AMethPropdef::_n_visibility*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AMethPropdef____n_visibility(variable[0]) /*AMethPropdef::_n_visibility*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AExternMethPropdef____n_kwmeth(variable[0]) /*AExternMethPropdef::_n_kwmeth*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AExternMethPropdef____n_kwmeth(variable[0]) /*AExternMethPropdef::_n_kwmeth*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AMethPropdef____n_methid(variable[0]) /*AMethPropdef::_n_methid*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AMethPropdef____n_methid(variable[0]) /*AMethPropdef::_n_methid*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AMethPropdef____n_signature(variable[0]) /*AMethPropdef::_n_signature*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AMethPropdef____n_signature(variable[0]) /*AMethPropdef::_n_signature*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AExternMethPropdef____n_extern(variable[0]) /*AExternMethPropdef::_n_extern*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AExternMethPropdef____n_extern(variable[0]) /*AExternMethPropdef::_n_extern*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  return_label224: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AConcreteMethPropdef___n_doc__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AConcreteMethPropdef::n_doc= (src/parser//parser_prod.nit:2462,5--2466:20)"};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___AExternMethPropdef___empty_init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 2360, LOCATE_parser_prod___AExternMethPropdef___empty_init};
+  val_t variable[2];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  variable0 =  param0;
-  ATTR_parser_nodes___PPropdef____n_doc( self) /*AConcreteMethPropdef::_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*/) /*PDoc::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PDoc::parent=*/;
-  }
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AExternMethPropdef].i]) return;
+  /* Register variable[1]: Method return value and escape marker */
+  return_label225: while(false);
+  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AExternMethPropdef].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AConcreteMethPropdef___n_kwredef__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AConcreteMethPropdef::n_kwredef= (src/parser//parser_prod.nit:2469,5--2473:20)"};
-  val_t variable0;
-  val_t variable1;
+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, 2362, LOCATE_parser_prod___AExternMethPropdef___init_aexternmethpropdef};
+  val_t variable[10];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Local variable */
+  variable[2] =  param1;
+  /* Register variable[3]: Local variable */
+  variable[3] =  param2;
+  /* Register variable[4]: Local variable */
+  variable[4] =  param3;
+  /* Register variable[5]: Local variable */
+  variable[5] =  param4;
+  /* Register variable[6]: Local variable */
+  variable[6] =  param5;
+  /* Register variable[7]: Local variable */
+  variable[7] =  param6;
+  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AExternMethPropdef].i]) return;
+  /* Register variable[8]: Method return value and escape marker */
+  CALL_parser_prod___AExternMethPropdef___empty_init(variable[0])(variable[0], init_table /*YYY*/) /*AExternMethPropdef::empty_init*/;
+  ATTR_parser_nodes___PPropdef____n_doc(variable[0]) /*PPropdef::_n_doc*/ =  variable[1] /*n_doc*/;
+  /* Register variable[9]: Result */
+  variable[9] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_doc*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_doc*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n_doc*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_doc*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n_doc*/)( variable[1] /*n_doc*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[9])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n_doc*/)( variable[1] /*n_doc*/, variable[0]) /*PNode::parent=*/;
+  }
+  ATTR_parser_nodes___AMethPropdef____n_kwredef(variable[0]) /*AMethPropdef::_n_kwredef*/ =  variable[2] /*n_kwredef*/;
+  /* Register variable[9]: Result */
+  variable[9] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*n_kwredef*/ ==  NIT_NULL /*null*/) || (( variable[2] /*n_kwredef*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*n_kwredef*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*n_kwredef*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*n_kwredef*/)( variable[2] /*n_kwredef*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[9])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[2] /*n_kwredef*/)( variable[2] /*n_kwredef*/, variable[0]) /*PNode::parent=*/;
+  }
+  ATTR_parser_nodes___AMethPropdef____n_visibility(variable[0]) /*AMethPropdef::_n_visibility*/ =  variable[3] /*n_visibility*/;
+  /* Register variable[9]: Result */
+  variable[9] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[3] /*n_visibility*/ ==  NIT_NULL /*null*/) || (( variable[3] /*n_visibility*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[3] /*n_visibility*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[3] /*n_visibility*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[3] /*n_visibility*/)( variable[3] /*n_visibility*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[9])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[3] /*n_visibility*/)( variable[3] /*n_visibility*/, variable[0]) /*PNode::parent=*/;
+  }
+  ATTR_parser_nodes___AExternMethPropdef____n_kwmeth(variable[0]) /*AExternMethPropdef::_n_kwmeth*/ =  variable[4] /*n_kwmeth*/;
+  /* Register variable[9]: Result */
+  variable[9] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[4] /*n_kwmeth*/ ==  NIT_NULL /*null*/) || (( variable[4] /*n_kwmeth*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[4] /*n_kwmeth*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[4] /*n_kwmeth*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[4] /*n_kwmeth*/)( variable[4] /*n_kwmeth*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[9])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[4] /*n_kwmeth*/)( variable[4] /*n_kwmeth*/, variable[0]) /*PNode::parent=*/;
+  }
+  ATTR_parser_nodes___AMethPropdef____n_methid(variable[0]) /*AMethPropdef::_n_methid*/ =  variable[5] /*n_methid*/;
+  /* Register variable[9]: Result */
+  variable[9] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[5] /*n_methid*/ ==  NIT_NULL /*null*/) || (( variable[5] /*n_methid*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[5] /*n_methid*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[5] /*n_methid*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[5] /*n_methid*/)( variable[5] /*n_methid*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[9])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[5] /*n_methid*/)( variable[5] /*n_methid*/, variable[0]) /*PNode::parent=*/;
+  }
+  ATTR_parser_nodes___AMethPropdef____n_signature(variable[0]) /*AMethPropdef::_n_signature*/ =  variable[6] /*n_signature*/;
+  /* Register variable[9]: Result */
+  variable[9] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[6] /*n_signature*/ ==  NIT_NULL /*null*/) || (( variable[6] /*n_signature*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[6] /*n_signature*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[6] /*n_signature*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[6] /*n_signature*/)( variable[6] /*n_signature*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[9])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[6] /*n_signature*/)( variable[6] /*n_signature*/, variable[0]) /*PNode::parent=*/;
+  }
+  ATTR_parser_nodes___AExternMethPropdef____n_extern(variable[0]) /*AExternMethPropdef::_n_extern*/ =  variable[7] /*n_extern*/;
+  /* Register variable[9]: Result */
+  variable[9] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[7] /*n_extern*/ ==  NIT_NULL /*null*/) || (( variable[7] /*n_extern*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[7] /*n_extern*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[7] /*n_extern*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[7] /*n_extern*/)( variable[7] /*n_extern*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[9])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[7] /*n_extern*/)( variable[7] /*n_extern*/, variable[0]) /*PNode::parent=*/;
+  }
+  return_label226: while(false);
+  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AExternMethPropdef].i] = 1;
+  tracehead = trace.prev;
+  return;
+}
+void parser_prod___AConcreteMethPropdef___n_doc__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 2529, LOCATE_parser_prod___AConcreteMethPropdef___n_doc__eq};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  variable0 =  param0;
-  ATTR_parser_nodes___AMethPropdef____n_kwredef( self) /*AConcreteMethPropdef::_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*/) /*TKwredef::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*TKwredef::parent=*/;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  ATTR_parser_nodes___PPropdef____n_doc(variable[0]) /*PPropdef::_n_doc*/ =  variable[1] /*n*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[0]) /*PNode::parent=*/;
   }
+  return_label227: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AConcreteMethPropdef___n_visibility__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AConcreteMethPropdef::n_visibility= (src/parser//parser_prod.nit:2476,5--2480:20)"};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  variable0 =  param0;
-  ATTR_parser_nodes___AMethPropdef____n_visibility( self) /*AConcreteMethPropdef::_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*/) /*PVisibility::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PVisibility::parent=*/;
+void parser_prod___AConcreteMethPropdef___n_kwredef__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 2536, LOCATE_parser_prod___AConcreteMethPropdef___n_kwredef__eq};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  ATTR_parser_nodes___AMethPropdef____n_kwredef(variable[0]) /*AMethPropdef::_n_kwredef*/ =  variable[1] /*n*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[0]) /*PNode::parent=*/;
   }
+  return_label228: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AConcreteMethPropdef___n_kwmeth__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AConcreteMethPropdef::n_kwmeth= (src/parser//parser_prod.nit:2483,5--2487:20)"};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___AConcreteMethPropdef___n_visibility__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 2543, LOCATE_parser_prod___AConcreteMethPropdef___n_visibility__eq};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  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*/) /*TKwmeth::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*TKwmeth::parent=*/;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  ATTR_parser_nodes___AMethPropdef____n_visibility(variable[0]) /*AMethPropdef::_n_visibility*/ =  variable[1] /*n*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[0]) /*PNode::parent=*/;
   }
+  return_label229: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AConcreteMethPropdef___n_methid__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AConcreteMethPropdef::n_methid= (src/parser//parser_prod.nit:2490,5--2494:20)"};
-  val_t variable0;
-  val_t variable1;
+  struct trace_t trace = {NULL, NULL, 2557, LOCATE_parser_prod___AConcreteMethPropdef___n_methid__eq};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  variable0 =  param0;
-  ATTR_parser_nodes___AMethPropdef____n_methid( self) /*AConcreteMethPropdef::_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*/) /*PMethid::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PMethid::parent=*/;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  ATTR_parser_nodes___AMethPropdef____n_methid(variable[0]) /*AMethPropdef::_n_methid*/ =  variable[1] /*n*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[0]) /*PNode::parent=*/;
   }
+  return_label230: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AConcreteMethPropdef___n_signature__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AConcreteMethPropdef::n_signature= (src/parser//parser_prod.nit:2497,5--2501:20)"};
-  val_t variable0;
-  val_t variable1;
+  struct trace_t trace = {NULL, NULL, 2564, LOCATE_parser_prod___AConcreteMethPropdef___n_signature__eq};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  variable0 =  param0;
-  ATTR_parser_nodes___AMethPropdef____n_signature( self) /*AConcreteMethPropdef::_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*/) /*PSignature::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PSignature::parent=*/;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  ATTR_parser_nodes___AMethPropdef____n_signature(variable[0]) /*AMethPropdef::_n_signature*/ =  variable[1] /*n*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[0]) /*PNode::parent=*/;
   }
+  return_label231: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AConcreteMethPropdef___n_block__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AConcreteMethPropdef::n_block= (src/parser//parser_prod.nit:2504,5--2508:20)"};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___AConcreteMethPropdef___n_kwmeth__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 2550, LOCATE_parser_prod___AConcreteMethPropdef___n_kwmeth__eq};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  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*/) /*PExpr::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PExpr::parent=*/;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  ATTR_parser_nodes___AConcreteMethPropdef____n_kwmeth(variable[0]) /*AConcreteMethPropdef::_n_kwmeth*/ =  variable[1] /*n*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[0]) /*PNode::parent=*/;
   }
+  return_label232: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AConcreteMethPropdef___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, "parser_prod::AConcreteMethPropdef::empty_init (src/parser//parser_prod.nit:2512,5--27)"};
+void parser_prod___AConcreteMethPropdef___n_block__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 2571, LOCATE_parser_prod___AConcreteMethPropdef___n_block__eq};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  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, "parser_prod::AConcreteMethPropdef::init_aconcretemethpropdef (src/parser//parser_prod.nit:2514,5--2550:23)"};
-  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;
-  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) /*AConcreteMethPropdef::_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*/) /*PDoc::==*/)))))));
-  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) /*PDoc::parent=*/;
-  }
-  ATTR_parser_nodes___AMethPropdef____n_kwredef( self) /*AConcreteMethPropdef::_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*/) /*TKwredef::==*/)))))));
-  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) /*TKwredef::parent=*/;
-  }
-  ATTR_parser_nodes___AMethPropdef____n_visibility( self) /*AConcreteMethPropdef::_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*/) /*PVisibility::==*/)))))));
-  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) /*PVisibility::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*/) /*TKwmeth::==*/)))))));
-  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) /*TKwmeth::parent=*/;
-  }
-  ATTR_parser_nodes___AMethPropdef____n_methid( self) /*AConcreteMethPropdef::_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*/) /*PMethid::==*/)))))));
-  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) /*PMethid::parent=*/;
-  }
-  ATTR_parser_nodes___AMethPropdef____n_signature( self) /*AConcreteMethPropdef::_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*/) /*PSignature::==*/)))))));
-  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) /*PSignature::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*/) /*PExpr::==*/)))))));
-  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) /*PExpr::parent=*/;
-  }
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AConcreteMethPropdef].i] = 1;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  ATTR_parser_nodes___AConcreteMethPropdef____n_block(variable[0]) /*AConcreteMethPropdef::_n_block*/ =  variable[1] /*n*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[0]) /*PNode::parent=*/;
+  }
+  return_label233: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AConcreteMethPropdef___replace_child(val_t  self, val_t  param0, val_t  param1) {
-  struct trace_t trace = {NULL, "parser_prod::AConcreteMethPropdef::replace_child (src/parser//parser_prod.nit:2554,5--2625:18)"};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  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*/) /*PNode::==*/)))))));
-  if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert failed: src/parser//parser_prod.nit:2556,9--32\n"); nit_exit(1);}
-  variable2 = ATTR_parser_nodes___PPropdef____n_doc( self) /*AConcreteMethPropdef::_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*/) /*PDoc::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*PNode::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_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 failed: src/parser//parser_prod.nit:2560,3--27\n"); nit_exit(1);}
-      ATTR_parser_nodes___PPropdef____n_doc( self) /*AConcreteMethPropdef::_n_doc*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___PPropdef____n_doc( self) /*AConcreteMethPropdef::_n_doc*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label216;
-  }
-  variable2 = ATTR_parser_nodes___AMethPropdef____n_kwredef( self) /*AConcreteMethPropdef::_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*/) /*TKwredef::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*PNode::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_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 failed: src/parser//parser_prod.nit:2570,3--31\n"); nit_exit(1);}
-      ATTR_parser_nodes___AMethPropdef____n_kwredef( self) /*AConcreteMethPropdef::_n_kwredef*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___AMethPropdef____n_kwredef( self) /*AConcreteMethPropdef::_n_kwredef*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label216;
-  }
-  variable2 = ATTR_parser_nodes___AMethPropdef____n_visibility( self) /*AConcreteMethPropdef::_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*/) /*PVisibility::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*PNode::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_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 failed: src/parser//parser_prod.nit:2580,3--34\n"); nit_exit(1);}
-      ATTR_parser_nodes___AMethPropdef____n_visibility( self) /*AConcreteMethPropdef::_n_visibility*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___AMethPropdef____n_visibility( self) /*AConcreteMethPropdef::_n_visibility*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label216;
-  }
-  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*/) /*TKwmeth::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*PNode::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_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 failed: src/parser//parser_prod.nit:2590,3--30\n"); 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_label216;
-  }
-  variable2 = ATTR_parser_nodes___AMethPropdef____n_methid( self) /*AConcreteMethPropdef::_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*/) /*PMethid::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*PNode::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_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 failed: src/parser//parser_prod.nit:2600,3--30\n"); nit_exit(1);}
-      ATTR_parser_nodes___AMethPropdef____n_methid( self) /*AConcreteMethPropdef::_n_methid*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___AMethPropdef____n_methid( self) /*AConcreteMethPropdef::_n_methid*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label216;
-  }
-  variable2 = ATTR_parser_nodes___AMethPropdef____n_signature( self) /*AConcreteMethPropdef::_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*/) /*PSignature::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*PNode::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_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 failed: src/parser//parser_prod.nit:2610,3--33\n"); nit_exit(1);}
-      ATTR_parser_nodes___AMethPropdef____n_signature( self) /*AConcreteMethPropdef::_n_signature*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___AMethPropdef____n_signature( self) /*AConcreteMethPropdef::_n_signature*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label216;
-  }
-  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*/) /*PExpr::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*PNode::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_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 failed: src/parser//parser_prod.nit:2620,3--28\n"); 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_label216;
+  struct trace_t trace = {NULL, NULL, 2622, LOCATE_parser_prod___AConcreteMethPropdef___replace_child};
+  val_t variable[5];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Local variable */
+  variable[2] =  param1;
+  /* Register variable[3]: Method return value and escape marker */
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AConcreteMethPropdef___replace_child, LOCATE_parser_prod, 2624); nit_exit(1);}
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___PPropdef____n_doc(variable[0]) /*PPropdef::_n_doc*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*PNode::parent=*/;
+      /* Register variable[4]: Result */
+      variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
+      if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AConcreteMethPropdef___replace_child, LOCATE_parser_prod, 2628); nit_exit(1);}
+      ATTR_parser_nodes___PPropdef____n_doc(variable[0]) /*PPropdef::_n_doc*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      ATTR_parser_nodes___PPropdef____n_doc(variable[0]) /*PPropdef::_n_doc*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label234;
+  }
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___AMethPropdef____n_kwredef(variable[0]) /*AMethPropdef::_n_kwredef*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*PNode::parent=*/;
+      /* Register variable[4]: Result */
+      variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
+      if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AConcreteMethPropdef___replace_child, LOCATE_parser_prod, 2638); nit_exit(1);}
+      ATTR_parser_nodes___AMethPropdef____n_kwredef(variable[0]) /*AMethPropdef::_n_kwredef*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      ATTR_parser_nodes___AMethPropdef____n_kwredef(variable[0]) /*AMethPropdef::_n_kwredef*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label234;
+  }
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___AMethPropdef____n_visibility(variable[0]) /*AMethPropdef::_n_visibility*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*PNode::parent=*/;
+      /* Register variable[4]: Result */
+      variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
+      if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AConcreteMethPropdef___replace_child, LOCATE_parser_prod, 2648); nit_exit(1);}
+      ATTR_parser_nodes___AMethPropdef____n_visibility(variable[0]) /*AMethPropdef::_n_visibility*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      ATTR_parser_nodes___AMethPropdef____n_visibility(variable[0]) /*AMethPropdef::_n_visibility*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label234;
+  }
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___AConcreteMethPropdef____n_kwmeth(variable[0]) /*AConcreteMethPropdef::_n_kwmeth*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*PNode::parent=*/;
+      /* Register variable[4]: Result */
+      variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_TKwmeth, ID_TKwmeth)) /*cast TKwmeth*/;
+      if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AConcreteMethPropdef___replace_child, LOCATE_parser_prod, 2658); nit_exit(1);}
+      ATTR_parser_nodes___AConcreteMethPropdef____n_kwmeth(variable[0]) /*AConcreteMethPropdef::_n_kwmeth*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      ATTR_parser_nodes___AConcreteMethPropdef____n_kwmeth(variable[0]) /*AConcreteMethPropdef::_n_kwmeth*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label234;
+  }
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___AMethPropdef____n_methid(variable[0]) /*AMethPropdef::_n_methid*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*PNode::parent=*/;
+      /* Register variable[4]: Result */
+      variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PMethid, ID_PMethid)) /*cast PMethid*/;
+      if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AConcreteMethPropdef___replace_child, LOCATE_parser_prod, 2668); nit_exit(1);}
+      ATTR_parser_nodes___AMethPropdef____n_methid(variable[0]) /*AMethPropdef::_n_methid*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      ATTR_parser_nodes___AMethPropdef____n_methid(variable[0]) /*AMethPropdef::_n_methid*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label234;
+  }
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___AMethPropdef____n_signature(variable[0]) /*AMethPropdef::_n_signature*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*PNode::parent=*/;
+      /* Register variable[4]: Result */
+      variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PSignature, ID_PSignature)) /*cast PSignature*/;
+      if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AConcreteMethPropdef___replace_child, LOCATE_parser_prod, 2678); nit_exit(1);}
+      ATTR_parser_nodes___AMethPropdef____n_signature(variable[0]) /*AMethPropdef::_n_signature*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      ATTR_parser_nodes___AMethPropdef____n_signature(variable[0]) /*AMethPropdef::_n_signature*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label234;
+  }
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___AConcreteMethPropdef____n_block(variable[0]) /*AConcreteMethPropdef::_n_block*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*PNode::parent=*/;
+      /* Register variable[4]: Result */
+      variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
+      if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AConcreteMethPropdef___replace_child, LOCATE_parser_prod, 2688); nit_exit(1);}
+      ATTR_parser_nodes___AConcreteMethPropdef____n_block(variable[0]) /*AConcreteMethPropdef::_n_block*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      ATTR_parser_nodes___AConcreteMethPropdef____n_block(variable[0]) /*AConcreteMethPropdef::_n_block*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label234;
   }
-  return_label216: while(false);
+  return_label234: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AConcreteMethPropdef___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AConcreteMethPropdef::visit_all (src/parser//parser_prod.nit:2629,5--2650:28)"};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___PPropdef____n_doc( self) /*AConcreteMethPropdef::_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*/) /*PDoc::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___PPropdef____n_doc( self) /*AConcreteMethPropdef::_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) /*AConcreteMethPropdef::_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*/) /*TKwredef::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AMethPropdef____n_kwredef( self) /*AConcreteMethPropdef::_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) /*AConcreteMethPropdef::_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*/) /*PVisibility::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AMethPropdef____n_visibility( self) /*AConcreteMethPropdef::_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*/) /*TKwmeth::==*/)))))));
-  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) /*AConcreteMethPropdef::_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*/) /*PMethid::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AMethPropdef____n_methid( self) /*AConcreteMethPropdef::_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) /*AConcreteMethPropdef::_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*/) /*PSignature::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AMethPropdef____n_signature( self) /*AConcreteMethPropdef::_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*/) /*PExpr::==*/)))))));
-  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*/;
+  struct trace_t trace = {NULL, NULL, 2697, LOCATE_parser_prod___AConcreteMethPropdef___visit_all};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___PPropdef____n_doc(variable[0]) /*PPropdef::_n_doc*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___PPropdef____n_doc(variable[0]) /*PPropdef::_n_doc*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AMethPropdef____n_kwredef(variable[0]) /*AMethPropdef::_n_kwredef*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AMethPropdef____n_kwredef(variable[0]) /*AMethPropdef::_n_kwredef*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AMethPropdef____n_visibility(variable[0]) /*AMethPropdef::_n_visibility*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AMethPropdef____n_visibility(variable[0]) /*AMethPropdef::_n_visibility*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AConcreteMethPropdef____n_kwmeth(variable[0]) /*AConcreteMethPropdef::_n_kwmeth*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AConcreteMethPropdef____n_kwmeth(variable[0]) /*AConcreteMethPropdef::_n_kwmeth*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AMethPropdef____n_methid(variable[0]) /*AMethPropdef::_n_methid*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AMethPropdef____n_methid(variable[0]) /*AMethPropdef::_n_methid*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AMethPropdef____n_signature(variable[0]) /*AMethPropdef::_n_signature*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AMethPropdef____n_signature(variable[0]) /*AMethPropdef::_n_signature*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AConcreteMethPropdef____n_block(variable[0]) /*AConcreteMethPropdef::_n_block*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AConcreteMethPropdef____n_block(variable[0]) /*AConcreteMethPropdef::_n_block*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
+  return_label235: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AConcreteMethPropdef___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AConcreteMethPropdef::visit_all_reverse (src/parser//parser_prod.nit:2654,5--2675:28)"};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___PPropdef____n_doc( self) /*AConcreteMethPropdef::_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*/) /*PDoc::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___PPropdef____n_doc( self) /*AConcreteMethPropdef::_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) /*AConcreteMethPropdef::_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*/) /*TKwredef::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AMethPropdef____n_kwredef( self) /*AConcreteMethPropdef::_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) /*AConcreteMethPropdef::_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*/) /*PVisibility::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AMethPropdef____n_visibility( self) /*AConcreteMethPropdef::_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*/) /*TKwmeth::==*/)))))));
-  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) /*AConcreteMethPropdef::_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*/) /*PMethid::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AMethPropdef____n_methid( self) /*AConcreteMethPropdef::_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) /*AConcreteMethPropdef::_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*/) /*PSignature::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AMethPropdef____n_signature( self) /*AConcreteMethPropdef::_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*/) /*PExpr::==*/)))))));
-  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*/;
-  }
+  struct trace_t trace = {NULL, NULL, 2722, LOCATE_parser_prod___AConcreteMethPropdef___visit_all_reverse};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___PPropdef____n_doc(variable[0]) /*PPropdef::_n_doc*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___PPropdef____n_doc(variable[0]) /*PPropdef::_n_doc*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AMethPropdef____n_kwredef(variable[0]) /*AMethPropdef::_n_kwredef*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AMethPropdef____n_kwredef(variable[0]) /*AMethPropdef::_n_kwredef*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AMethPropdef____n_visibility(variable[0]) /*AMethPropdef::_n_visibility*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AMethPropdef____n_visibility(variable[0]) /*AMethPropdef::_n_visibility*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AConcreteMethPropdef____n_kwmeth(variable[0]) /*AConcreteMethPropdef::_n_kwmeth*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AConcreteMethPropdef____n_kwmeth(variable[0]) /*AConcreteMethPropdef::_n_kwmeth*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AMethPropdef____n_methid(variable[0]) /*AMethPropdef::_n_methid*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AMethPropdef____n_methid(variable[0]) /*AMethPropdef::_n_methid*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AMethPropdef____n_signature(variable[0]) /*AMethPropdef::_n_signature*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AMethPropdef____n_signature(variable[0]) /*AMethPropdef::_n_signature*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AConcreteMethPropdef____n_block(variable[0]) /*AConcreteMethPropdef::_n_block*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AConcreteMethPropdef____n_block(variable[0]) /*AConcreteMethPropdef::_n_block*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  return_label236: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AConcreteInitPropdef___n_doc__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AConcreteInitPropdef::n_doc= (src/parser//parser_prod.nit:2680,5--2684:20)"};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___AConcreteMethPropdef___empty_init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 2579, LOCATE_parser_prod___AConcreteMethPropdef___empty_init};
+  val_t variable[2];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  variable0 =  param0;
-  ATTR_parser_nodes___PPropdef____n_doc( self) /*AConcreteInitPropdef::_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*/) /*PDoc::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PDoc::parent=*/;
-  }
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AConcreteMethPropdef].i]) return;
+  /* Register variable[1]: Method return value and escape marker */
+  return_label237: while(false);
+  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AConcreteMethPropdef].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AConcreteInitPropdef___n_kwredef__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AConcreteInitPropdef::n_kwredef= (src/parser//parser_prod.nit:2687,5--2691:20)"};
-  val_t variable0;
-  val_t variable1;
+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, 2581, LOCATE_parser_prod___AConcreteMethPropdef___init_aconcretemethpropdef};
+  val_t variable[10];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Local variable */
+  variable[2] =  param1;
+  /* Register variable[3]: Local variable */
+  variable[3] =  param2;
+  /* Register variable[4]: Local variable */
+  variable[4] =  param3;
+  /* Register variable[5]: Local variable */
+  variable[5] =  param4;
+  /* Register variable[6]: Local variable */
+  variable[6] =  param5;
+  /* Register variable[7]: Local variable */
+  variable[7] =  param6;
+  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AConcreteMethPropdef].i]) return;
+  /* Register variable[8]: Method return value and escape marker */
+  CALL_parser_prod___AConcreteMethPropdef___empty_init(variable[0])(variable[0], init_table /*YYY*/) /*AConcreteMethPropdef::empty_init*/;
+  ATTR_parser_nodes___PPropdef____n_doc(variable[0]) /*PPropdef::_n_doc*/ =  variable[1] /*n_doc*/;
+  /* Register variable[9]: Result */
+  variable[9] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_doc*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_doc*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n_doc*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_doc*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n_doc*/)( variable[1] /*n_doc*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[9])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n_doc*/)( variable[1] /*n_doc*/, variable[0]) /*PNode::parent=*/;
+  }
+  ATTR_parser_nodes___AMethPropdef____n_kwredef(variable[0]) /*AMethPropdef::_n_kwredef*/ =  variable[2] /*n_kwredef*/;
+  /* Register variable[9]: Result */
+  variable[9] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*n_kwredef*/ ==  NIT_NULL /*null*/) || (( variable[2] /*n_kwredef*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*n_kwredef*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*n_kwredef*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*n_kwredef*/)( variable[2] /*n_kwredef*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[9])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[2] /*n_kwredef*/)( variable[2] /*n_kwredef*/, variable[0]) /*PNode::parent=*/;
+  }
+  ATTR_parser_nodes___AMethPropdef____n_visibility(variable[0]) /*AMethPropdef::_n_visibility*/ =  variable[3] /*n_visibility*/;
+  /* Register variable[9]: Result */
+  variable[9] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[3] /*n_visibility*/ ==  NIT_NULL /*null*/) || (( variable[3] /*n_visibility*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[3] /*n_visibility*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[3] /*n_visibility*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[3] /*n_visibility*/)( variable[3] /*n_visibility*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[9])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[3] /*n_visibility*/)( variable[3] /*n_visibility*/, variable[0]) /*PNode::parent=*/;
+  }
+  ATTR_parser_nodes___AConcreteMethPropdef____n_kwmeth(variable[0]) /*AConcreteMethPropdef::_n_kwmeth*/ =  variable[4] /*n_kwmeth*/;
+  /* Register variable[9]: Result */
+  variable[9] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[4] /*n_kwmeth*/ ==  NIT_NULL /*null*/) || (( variable[4] /*n_kwmeth*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[4] /*n_kwmeth*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[4] /*n_kwmeth*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[4] /*n_kwmeth*/)( variable[4] /*n_kwmeth*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[9])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[4] /*n_kwmeth*/)( variable[4] /*n_kwmeth*/, variable[0]) /*PNode::parent=*/;
+  }
+  ATTR_parser_nodes___AMethPropdef____n_methid(variable[0]) /*AMethPropdef::_n_methid*/ =  variable[5] /*n_methid*/;
+  /* Register variable[9]: Result */
+  variable[9] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[5] /*n_methid*/ ==  NIT_NULL /*null*/) || (( variable[5] /*n_methid*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[5] /*n_methid*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[5] /*n_methid*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[5] /*n_methid*/)( variable[5] /*n_methid*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[9])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[5] /*n_methid*/)( variable[5] /*n_methid*/, variable[0]) /*PNode::parent=*/;
+  }
+  ATTR_parser_nodes___AMethPropdef____n_signature(variable[0]) /*AMethPropdef::_n_signature*/ =  variable[6] /*n_signature*/;
+  /* Register variable[9]: Result */
+  variable[9] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[6] /*n_signature*/ ==  NIT_NULL /*null*/) || (( variable[6] /*n_signature*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[6] /*n_signature*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[6] /*n_signature*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[6] /*n_signature*/)( variable[6] /*n_signature*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[9])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[6] /*n_signature*/)( variable[6] /*n_signature*/, variable[0]) /*PNode::parent=*/;
+  }
+  ATTR_parser_nodes___AConcreteMethPropdef____n_block(variable[0]) /*AConcreteMethPropdef::_n_block*/ =  variable[7] /*n_block*/;
+  /* Register variable[9]: Result */
+  variable[9] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[7] /*n_block*/ ==  NIT_NULL /*null*/) || (( variable[7] /*n_block*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[7] /*n_block*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[7] /*n_block*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[7] /*n_block*/)( variable[7] /*n_block*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[9])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[7] /*n_block*/)( variable[7] /*n_block*/, variable[0]) /*PNode::parent=*/;
+  }
+  return_label238: while(false);
+  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AConcreteMethPropdef].i] = 1;
+  tracehead = trace.prev;
+  return;
+}
+void parser_prod___AConcreteInitPropdef___n_doc__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 2748, LOCATE_parser_prod___AConcreteInitPropdef___n_doc__eq};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  variable0 =  param0;
-  ATTR_parser_nodes___AMethPropdef____n_kwredef( self) /*AConcreteInitPropdef::_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*/) /*TKwredef::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*TKwredef::parent=*/;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  ATTR_parser_nodes___PPropdef____n_doc(variable[0]) /*PPropdef::_n_doc*/ =  variable[1] /*n*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[0]) /*PNode::parent=*/;
   }
+  return_label239: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AConcreteInitPropdef___n_visibility__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AConcreteInitPropdef::n_visibility= (src/parser//parser_prod.nit:2694,5--2698:20)"};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___AConcreteInitPropdef___n_kwredef__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 2755, LOCATE_parser_prod___AConcreteInitPropdef___n_kwredef__eq};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  variable0 =  param0;
-  ATTR_parser_nodes___AMethPropdef____n_visibility( self) /*AConcreteInitPropdef::_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*/) /*PVisibility::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PVisibility::parent=*/;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  ATTR_parser_nodes___AMethPropdef____n_kwredef(variable[0]) /*AMethPropdef::_n_kwredef*/ =  variable[1] /*n*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[0]) /*PNode::parent=*/;
   }
+  return_label240: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AConcreteInitPropdef___n_kwinit__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AConcreteInitPropdef::n_kwinit= (src/parser//parser_prod.nit:2701,5--2705:20)"};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___AConcreteInitPropdef___n_visibility__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 2762, LOCATE_parser_prod___AConcreteInitPropdef___n_visibility__eq};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  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*/) /*TKwinit::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*TKwinit::parent=*/;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  ATTR_parser_nodes___AMethPropdef____n_visibility(variable[0]) /*AMethPropdef::_n_visibility*/ =  variable[1] /*n*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[0]) /*PNode::parent=*/;
   }
+  return_label241: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AConcreteInitPropdef___n_methid__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AConcreteInitPropdef::n_methid= (src/parser//parser_prod.nit:2708,5--2712:20)"};
-  val_t variable0;
-  val_t variable1;
+  struct trace_t trace = {NULL, NULL, 2776, LOCATE_parser_prod___AConcreteInitPropdef___n_methid__eq};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  variable0 =  param0;
-  ATTR_parser_nodes___AMethPropdef____n_methid( self) /*AConcreteInitPropdef::_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*/) /*PMethid::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PMethid::parent=*/;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  ATTR_parser_nodes___AMethPropdef____n_methid(variable[0]) /*AMethPropdef::_n_methid*/ =  variable[1] /*n*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[0]) /*PNode::parent=*/;
   }
+  return_label242: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AConcreteInitPropdef___n_signature__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AConcreteInitPropdef::n_signature= (src/parser//parser_prod.nit:2715,5--2719:20)"};
-  val_t variable0;
-  val_t variable1;
+  struct trace_t trace = {NULL, NULL, 2783, LOCATE_parser_prod___AConcreteInitPropdef___n_signature__eq};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  variable0 =  param0;
-  ATTR_parser_nodes___AMethPropdef____n_signature( self) /*AConcreteInitPropdef::_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*/) /*PSignature::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PSignature::parent=*/;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  ATTR_parser_nodes___AMethPropdef____n_signature(variable[0]) /*AMethPropdef::_n_signature*/ =  variable[1] /*n*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[0]) /*PNode::parent=*/;
   }
+  return_label243: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AConcreteInitPropdef___n_block__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AConcreteInitPropdef::n_block= (src/parser//parser_prod.nit:2722,5--2726:20)"};
-  val_t variable0;
-  val_t variable1;
+  struct trace_t trace = {NULL, NULL, 2790, LOCATE_parser_prod___AConcreteInitPropdef___n_block__eq};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  variable0 =  param0;
-  ATTR_parser_nodes___AConcreteMethPropdef____n_block( self) /*AConcreteInitPropdef::_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*/) /*PExpr::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PExpr::parent=*/;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  ATTR_parser_nodes___AConcreteMethPropdef____n_block(variable[0]) /*AConcreteMethPropdef::_n_block*/ =  variable[1] /*n*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[0]) /*PNode::parent=*/;
   }
+  return_label244: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AConcreteInitPropdef___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, "parser_prod::AConcreteInitPropdef::empty_init (src/parser//parser_prod.nit:2730,5--27)"};
+void parser_prod___AConcreteInitPropdef___n_kwinit__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 2769, LOCATE_parser_prod___AConcreteInitPropdef___n_kwinit__eq};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  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, "parser_prod::AConcreteInitPropdef::init_aconcreteinitpropdef (src/parser//parser_prod.nit:2732,5--2768:23)"};
-  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;
-  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) /*AConcreteInitPropdef::_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*/) /*PDoc::==*/)))))));
-  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) /*PDoc::parent=*/;
-  }
-  ATTR_parser_nodes___AMethPropdef____n_kwredef( self) /*AConcreteInitPropdef::_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*/) /*TKwredef::==*/)))))));
-  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) /*TKwredef::parent=*/;
-  }
-  ATTR_parser_nodes___AMethPropdef____n_visibility( self) /*AConcreteInitPropdef::_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*/) /*PVisibility::==*/)))))));
-  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) /*PVisibility::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*/) /*TKwinit::==*/)))))));
-  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) /*TKwinit::parent=*/;
-  }
-  ATTR_parser_nodes___AMethPropdef____n_methid( self) /*AConcreteInitPropdef::_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*/) /*PMethid::==*/)))))));
-  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) /*PMethid::parent=*/;
-  }
-  ATTR_parser_nodes___AMethPropdef____n_signature( self) /*AConcreteInitPropdef::_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*/) /*PSignature::==*/)))))));
-  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) /*PSignature::parent=*/;
-  }
-  ATTR_parser_nodes___AConcreteMethPropdef____n_block( self) /*AConcreteInitPropdef::_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*/) /*PExpr::==*/)))))));
-  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) /*PExpr::parent=*/;
-  }
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AConcreteInitPropdef].i] = 1;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  ATTR_parser_nodes___AConcreteInitPropdef____n_kwinit(variable[0]) /*AConcreteInitPropdef::_n_kwinit*/ =  variable[1] /*n*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[0]) /*PNode::parent=*/;
+  }
+  return_label245: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AConcreteInitPropdef___replace_child(val_t  self, val_t  param0, val_t  param1) {
-  struct trace_t trace = {NULL, "parser_prod::AConcreteInitPropdef::replace_child (src/parser//parser_prod.nit:2772,5--2843:18)"};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  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*/) /*PNode::==*/)))))));
-  if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert failed: src/parser//parser_prod.nit:2774,9--32\n"); nit_exit(1);}
-  variable2 = ATTR_parser_nodes___PPropdef____n_doc( self) /*AConcreteInitPropdef::_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*/) /*PDoc::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*PNode::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_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 failed: src/parser//parser_prod.nit:2778,3--27\n"); nit_exit(1);}
-      ATTR_parser_nodes___PPropdef____n_doc( self) /*AConcreteInitPropdef::_n_doc*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___PPropdef____n_doc( self) /*AConcreteInitPropdef::_n_doc*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label228;
-  }
-  variable2 = ATTR_parser_nodes___AMethPropdef____n_kwredef( self) /*AConcreteInitPropdef::_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*/) /*TKwredef::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*PNode::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_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 failed: src/parser//parser_prod.nit:2788,3--31\n"); nit_exit(1);}
-      ATTR_parser_nodes___AMethPropdef____n_kwredef( self) /*AConcreteInitPropdef::_n_kwredef*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___AMethPropdef____n_kwredef( self) /*AConcreteInitPropdef::_n_kwredef*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label228;
-  }
-  variable2 = ATTR_parser_nodes___AMethPropdef____n_visibility( self) /*AConcreteInitPropdef::_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*/) /*PVisibility::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*PNode::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_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 failed: src/parser//parser_prod.nit:2798,3--34\n"); nit_exit(1);}
-      ATTR_parser_nodes___AMethPropdef____n_visibility( self) /*AConcreteInitPropdef::_n_visibility*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___AMethPropdef____n_visibility( self) /*AConcreteInitPropdef::_n_visibility*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label228;
-  }
-  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*/) /*TKwinit::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*PNode::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_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 failed: src/parser//parser_prod.nit:2808,3--30\n"); 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_label228;
-  }
-  variable2 = ATTR_parser_nodes___AMethPropdef____n_methid( self) /*AConcreteInitPropdef::_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*/) /*PMethid::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*PNode::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_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 failed: src/parser//parser_prod.nit:2818,3--30\n"); nit_exit(1);}
-      ATTR_parser_nodes___AMethPropdef____n_methid( self) /*AConcreteInitPropdef::_n_methid*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___AMethPropdef____n_methid( self) /*AConcreteInitPropdef::_n_methid*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label228;
-  }
-  variable2 = ATTR_parser_nodes___AMethPropdef____n_signature( self) /*AConcreteInitPropdef::_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*/) /*PSignature::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*PNode::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_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 failed: src/parser//parser_prod.nit:2828,3--33\n"); nit_exit(1);}
-      ATTR_parser_nodes___AMethPropdef____n_signature( self) /*AConcreteInitPropdef::_n_signature*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___AMethPropdef____n_signature( self) /*AConcreteInitPropdef::_n_signature*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label228;
-  }
-  variable2 = ATTR_parser_nodes___AConcreteMethPropdef____n_block( self) /*AConcreteInitPropdef::_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*/) /*PExpr::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*PNode::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_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 failed: src/parser//parser_prod.nit:2838,3--28\n"); nit_exit(1);}
-      ATTR_parser_nodes___AConcreteMethPropdef____n_block( self) /*AConcreteInitPropdef::_n_block*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___AConcreteMethPropdef____n_block( self) /*AConcreteInitPropdef::_n_block*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label228;
+  struct trace_t trace = {NULL, NULL, 2841, LOCATE_parser_prod___AConcreteInitPropdef___replace_child};
+  val_t variable[5];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Local variable */
+  variable[2] =  param1;
+  /* Register variable[3]: Method return value and escape marker */
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AConcreteInitPropdef___replace_child, LOCATE_parser_prod, 2843); nit_exit(1);}
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___PPropdef____n_doc(variable[0]) /*PPropdef::_n_doc*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*PNode::parent=*/;
+      /* Register variable[4]: Result */
+      variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
+      if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AConcreteInitPropdef___replace_child, LOCATE_parser_prod, 2847); nit_exit(1);}
+      ATTR_parser_nodes___PPropdef____n_doc(variable[0]) /*PPropdef::_n_doc*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      ATTR_parser_nodes___PPropdef____n_doc(variable[0]) /*PPropdef::_n_doc*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label246;
   }
-  return_label228: while(false);
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___AMethPropdef____n_kwredef(variable[0]) /*AMethPropdef::_n_kwredef*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*PNode::parent=*/;
+      /* Register variable[4]: Result */
+      variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
+      if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AConcreteInitPropdef___replace_child, LOCATE_parser_prod, 2857); nit_exit(1);}
+      ATTR_parser_nodes___AMethPropdef____n_kwredef(variable[0]) /*AMethPropdef::_n_kwredef*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      ATTR_parser_nodes___AMethPropdef____n_kwredef(variable[0]) /*AMethPropdef::_n_kwredef*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label246;
+  }
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___AMethPropdef____n_visibility(variable[0]) /*AMethPropdef::_n_visibility*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*PNode::parent=*/;
+      /* Register variable[4]: Result */
+      variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
+      if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AConcreteInitPropdef___replace_child, LOCATE_parser_prod, 2867); nit_exit(1);}
+      ATTR_parser_nodes___AMethPropdef____n_visibility(variable[0]) /*AMethPropdef::_n_visibility*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      ATTR_parser_nodes___AMethPropdef____n_visibility(variable[0]) /*AMethPropdef::_n_visibility*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label246;
+  }
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___AConcreteInitPropdef____n_kwinit(variable[0]) /*AConcreteInitPropdef::_n_kwinit*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*PNode::parent=*/;
+      /* Register variable[4]: Result */
+      variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_TKwinit, ID_TKwinit)) /*cast TKwinit*/;
+      if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AConcreteInitPropdef___replace_child, LOCATE_parser_prod, 2877); nit_exit(1);}
+      ATTR_parser_nodes___AConcreteInitPropdef____n_kwinit(variable[0]) /*AConcreteInitPropdef::_n_kwinit*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      ATTR_parser_nodes___AConcreteInitPropdef____n_kwinit(variable[0]) /*AConcreteInitPropdef::_n_kwinit*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label246;
+  }
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___AMethPropdef____n_methid(variable[0]) /*AMethPropdef::_n_methid*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*PNode::parent=*/;
+      /* Register variable[4]: Result */
+      variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PMethid, ID_PMethid)) /*cast PMethid*/;
+      if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AConcreteInitPropdef___replace_child, LOCATE_parser_prod, 2887); nit_exit(1);}
+      ATTR_parser_nodes___AMethPropdef____n_methid(variable[0]) /*AMethPropdef::_n_methid*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      ATTR_parser_nodes___AMethPropdef____n_methid(variable[0]) /*AMethPropdef::_n_methid*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label246;
+  }
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___AMethPropdef____n_signature(variable[0]) /*AMethPropdef::_n_signature*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*PNode::parent=*/;
+      /* Register variable[4]: Result */
+      variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PSignature, ID_PSignature)) /*cast PSignature*/;
+      if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AConcreteInitPropdef___replace_child, LOCATE_parser_prod, 2897); nit_exit(1);}
+      ATTR_parser_nodes___AMethPropdef____n_signature(variable[0]) /*AMethPropdef::_n_signature*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      ATTR_parser_nodes___AMethPropdef____n_signature(variable[0]) /*AMethPropdef::_n_signature*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label246;
+  }
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___AConcreteMethPropdef____n_block(variable[0]) /*AConcreteMethPropdef::_n_block*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*PNode::parent=*/;
+      /* Register variable[4]: Result */
+      variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
+      if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AConcreteInitPropdef___replace_child, LOCATE_parser_prod, 2907); nit_exit(1);}
+      ATTR_parser_nodes___AConcreteMethPropdef____n_block(variable[0]) /*AConcreteMethPropdef::_n_block*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      ATTR_parser_nodes___AConcreteMethPropdef____n_block(variable[0]) /*AConcreteMethPropdef::_n_block*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label246;
+  }
+  return_label246: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AConcreteInitPropdef___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AConcreteInitPropdef::visit_all (src/parser//parser_prod.nit:2847,5--2868:28)"};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___PPropdef____n_doc( self) /*AConcreteInitPropdef::_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*/) /*PDoc::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___PPropdef____n_doc( self) /*AConcreteInitPropdef::_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) /*AConcreteInitPropdef::_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*/) /*TKwredef::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AMethPropdef____n_kwredef( self) /*AConcreteInitPropdef::_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) /*AConcreteInitPropdef::_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*/) /*PVisibility::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AMethPropdef____n_visibility( self) /*AConcreteInitPropdef::_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*/) /*TKwinit::==*/)))))));
-  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) /*AConcreteInitPropdef::_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*/) /*PMethid::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AMethPropdef____n_methid( self) /*AConcreteInitPropdef::_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) /*AConcreteInitPropdef::_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*/) /*PSignature::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AMethPropdef____n_signature( self) /*AConcreteInitPropdef::_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) /*AConcreteInitPropdef::_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*/) /*PExpr::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AConcreteMethPropdef____n_block( self) /*AConcreteInitPropdef::_n_block*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
+  struct trace_t trace = {NULL, NULL, 2916, LOCATE_parser_prod___AConcreteInitPropdef___visit_all};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___PPropdef____n_doc(variable[0]) /*PPropdef::_n_doc*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___PPropdef____n_doc(variable[0]) /*PPropdef::_n_doc*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AMethPropdef____n_kwredef(variable[0]) /*AMethPropdef::_n_kwredef*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AMethPropdef____n_kwredef(variable[0]) /*AMethPropdef::_n_kwredef*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AMethPropdef____n_visibility(variable[0]) /*AMethPropdef::_n_visibility*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AMethPropdef____n_visibility(variable[0]) /*AMethPropdef::_n_visibility*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AConcreteInitPropdef____n_kwinit(variable[0]) /*AConcreteInitPropdef::_n_kwinit*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AConcreteInitPropdef____n_kwinit(variable[0]) /*AConcreteInitPropdef::_n_kwinit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AMethPropdef____n_methid(variable[0]) /*AMethPropdef::_n_methid*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AMethPropdef____n_methid(variable[0]) /*AMethPropdef::_n_methid*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AMethPropdef____n_signature(variable[0]) /*AMethPropdef::_n_signature*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AMethPropdef____n_signature(variable[0]) /*AMethPropdef::_n_signature*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AConcreteMethPropdef____n_block(variable[0]) /*AConcreteMethPropdef::_n_block*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AConcreteMethPropdef____n_block(variable[0]) /*AConcreteMethPropdef::_n_block*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  return_label247: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AConcreteInitPropdef___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AConcreteInitPropdef::visit_all_reverse (src/parser//parser_prod.nit:2872,5--2893:28)"};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___PPropdef____n_doc( self) /*AConcreteInitPropdef::_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*/) /*PDoc::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___PPropdef____n_doc( self) /*AConcreteInitPropdef::_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) /*AConcreteInitPropdef::_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*/) /*TKwredef::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AMethPropdef____n_kwredef( self) /*AConcreteInitPropdef::_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) /*AConcreteInitPropdef::_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*/) /*PVisibility::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AMethPropdef____n_visibility( self) /*AConcreteInitPropdef::_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*/) /*TKwinit::==*/)))))));
-  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) /*AConcreteInitPropdef::_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*/) /*PMethid::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AMethPropdef____n_methid( self) /*AConcreteInitPropdef::_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) /*AConcreteInitPropdef::_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*/) /*PSignature::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AMethPropdef____n_signature( self) /*AConcreteInitPropdef::_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) /*AConcreteInitPropdef::_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*/) /*PExpr::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AConcreteMethPropdef____n_block( self) /*AConcreteInitPropdef::_n_block*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
+  struct trace_t trace = {NULL, NULL, 2941, LOCATE_parser_prod___AConcreteInitPropdef___visit_all_reverse};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___PPropdef____n_doc(variable[0]) /*PPropdef::_n_doc*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___PPropdef____n_doc(variable[0]) /*PPropdef::_n_doc*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AMethPropdef____n_kwredef(variable[0]) /*AMethPropdef::_n_kwredef*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AMethPropdef____n_kwredef(variable[0]) /*AMethPropdef::_n_kwredef*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AMethPropdef____n_visibility(variable[0]) /*AMethPropdef::_n_visibility*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AMethPropdef____n_visibility(variable[0]) /*AMethPropdef::_n_visibility*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AConcreteInitPropdef____n_kwinit(variable[0]) /*AConcreteInitPropdef::_n_kwinit*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AConcreteInitPropdef____n_kwinit(variable[0]) /*AConcreteInitPropdef::_n_kwinit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AMethPropdef____n_methid(variable[0]) /*AMethPropdef::_n_methid*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AMethPropdef____n_methid(variable[0]) /*AMethPropdef::_n_methid*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AMethPropdef____n_signature(variable[0]) /*AMethPropdef::_n_signature*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AMethPropdef____n_signature(variable[0]) /*AMethPropdef::_n_signature*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AConcreteMethPropdef____n_block(variable[0]) /*AConcreteMethPropdef::_n_block*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AConcreteMethPropdef____n_block(variable[0]) /*AConcreteMethPropdef::_n_block*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  return_label248: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AMainMethPropdef___n_kwredef__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AMainMethPropdef::n_kwredef= (src/parser//parser_prod.nit:2898,5--2902:20)"};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___AConcreteInitPropdef___empty_init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 2798, LOCATE_parser_prod___AConcreteInitPropdef___empty_init};
+  val_t variable[2];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  variable0 =  param0;
-  ATTR_parser_nodes___AMethPropdef____n_kwredef( self) /*AMainMethPropdef::_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*/) /*TKwredef::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*TKwredef::parent=*/;
-  }
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AConcreteInitPropdef].i]) return;
+  /* Register variable[1]: Method return value and escape marker */
+  return_label249: while(false);
+  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AConcreteInitPropdef].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AMainMethPropdef___n_block__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AMainMethPropdef::n_block= (src/parser//parser_prod.nit:2905,5--2909:20)"};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  variable0 =  param0;
-  ATTR_parser_nodes___AConcreteMethPropdef____n_block( self) /*AMainMethPropdef::_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*/) /*PExpr::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PExpr::parent=*/;
-  }
+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, 2800, LOCATE_parser_prod___AConcreteInitPropdef___init_aconcreteinitpropdef};
+  val_t variable[10];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Local variable */
+  variable[2] =  param1;
+  /* Register variable[3]: Local variable */
+  variable[3] =  param2;
+  /* Register variable[4]: Local variable */
+  variable[4] =  param3;
+  /* Register variable[5]: Local variable */
+  variable[5] =  param4;
+  /* Register variable[6]: Local variable */
+  variable[6] =  param5;
+  /* Register variable[7]: Local variable */
+  variable[7] =  param6;
+  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AConcreteInitPropdef].i]) return;
+  /* Register variable[8]: Method return value and escape marker */
+  CALL_parser_prod___AConcreteInitPropdef___empty_init(variable[0])(variable[0], init_table /*YYY*/) /*AConcreteInitPropdef::empty_init*/;
+  ATTR_parser_nodes___PPropdef____n_doc(variable[0]) /*PPropdef::_n_doc*/ =  variable[1] /*n_doc*/;
+  /* Register variable[9]: Result */
+  variable[9] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_doc*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_doc*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n_doc*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_doc*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n_doc*/)( variable[1] /*n_doc*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[9])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n_doc*/)( variable[1] /*n_doc*/, variable[0]) /*PNode::parent=*/;
+  }
+  ATTR_parser_nodes___AMethPropdef____n_kwredef(variable[0]) /*AMethPropdef::_n_kwredef*/ =  variable[2] /*n_kwredef*/;
+  /* Register variable[9]: Result */
+  variable[9] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*n_kwredef*/ ==  NIT_NULL /*null*/) || (( variable[2] /*n_kwredef*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*n_kwredef*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*n_kwredef*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*n_kwredef*/)( variable[2] /*n_kwredef*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[9])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[2] /*n_kwredef*/)( variable[2] /*n_kwredef*/, variable[0]) /*PNode::parent=*/;
+  }
+  ATTR_parser_nodes___AMethPropdef____n_visibility(variable[0]) /*AMethPropdef::_n_visibility*/ =  variable[3] /*n_visibility*/;
+  /* Register variable[9]: Result */
+  variable[9] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[3] /*n_visibility*/ ==  NIT_NULL /*null*/) || (( variable[3] /*n_visibility*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[3] /*n_visibility*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[3] /*n_visibility*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[3] /*n_visibility*/)( variable[3] /*n_visibility*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[9])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[3] /*n_visibility*/)( variable[3] /*n_visibility*/, variable[0]) /*PNode::parent=*/;
+  }
+  ATTR_parser_nodes___AConcreteInitPropdef____n_kwinit(variable[0]) /*AConcreteInitPropdef::_n_kwinit*/ =  variable[4] /*n_kwinit*/;
+  /* Register variable[9]: Result */
+  variable[9] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[4] /*n_kwinit*/ ==  NIT_NULL /*null*/) || (( variable[4] /*n_kwinit*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[4] /*n_kwinit*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[4] /*n_kwinit*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[4] /*n_kwinit*/)( variable[4] /*n_kwinit*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[9])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[4] /*n_kwinit*/)( variable[4] /*n_kwinit*/, variable[0]) /*PNode::parent=*/;
+  }
+  ATTR_parser_nodes___AMethPropdef____n_methid(variable[0]) /*AMethPropdef::_n_methid*/ =  variable[5] /*n_methid*/;
+  /* Register variable[9]: Result */
+  variable[9] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[5] /*n_methid*/ ==  NIT_NULL /*null*/) || (( variable[5] /*n_methid*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[5] /*n_methid*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[5] /*n_methid*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[5] /*n_methid*/)( variable[5] /*n_methid*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[9])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[5] /*n_methid*/)( variable[5] /*n_methid*/, variable[0]) /*PNode::parent=*/;
+  }
+  ATTR_parser_nodes___AMethPropdef____n_signature(variable[0]) /*AMethPropdef::_n_signature*/ =  variable[6] /*n_signature*/;
+  /* Register variable[9]: Result */
+  variable[9] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[6] /*n_signature*/ ==  NIT_NULL /*null*/) || (( variable[6] /*n_signature*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[6] /*n_signature*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[6] /*n_signature*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[6] /*n_signature*/)( variable[6] /*n_signature*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[9])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[6] /*n_signature*/)( variable[6] /*n_signature*/, variable[0]) /*PNode::parent=*/;
+  }
+  ATTR_parser_nodes___AConcreteMethPropdef____n_block(variable[0]) /*AConcreteMethPropdef::_n_block*/ =  variable[7] /*n_block*/;
+  /* Register variable[9]: Result */
+  variable[9] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[7] /*n_block*/ ==  NIT_NULL /*null*/) || (( variable[7] /*n_block*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[7] /*n_block*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[7] /*n_block*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[7] /*n_block*/)( variable[7] /*n_block*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[9])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[7] /*n_block*/)( variable[7] /*n_block*/, variable[0]) /*PNode::parent=*/;
+  }
+  return_label250: while(false);
+  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AConcreteInitPropdef].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AMainMethPropdef___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, "parser_prod::AMainMethPropdef::empty_init (src/parser//parser_prod.nit:2913,5--27)"};
+void parser_prod___AMainMethPropdef___n_kwredef__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 2967, LOCATE_parser_prod___AMainMethPropdef___n_kwredef__eq};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  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;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  ATTR_parser_nodes___AMethPropdef____n_kwredef(variable[0]) /*AMethPropdef::_n_kwredef*/ =  variable[1] /*n*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[0]) /*PNode::parent=*/;
+  }
+  return_label251: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AMainMethPropdef___init_amainmethpropdef(val_t  self, val_t  param0, val_t  param1, int* init_table) {
-  struct trace_t trace = {NULL, "parser_prod::AMainMethPropdef::init_amainmethpropdef (src/parser//parser_prod.nit:2915,5--2926:23)"};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
+void parser_prod___AMainMethPropdef___n_block__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 2974, LOCATE_parser_prod___AMainMethPropdef___n_block__eq};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  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) /*AMainMethPropdef::_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*/) /*TKwredef::==*/)))))));
-  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) /*TKwredef::parent=*/;
-  }
-  ATTR_parser_nodes___AConcreteMethPropdef____n_block( self) /*AMainMethPropdef::_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*/) /*PExpr::==*/)))))));
-  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) /*PExpr::parent=*/;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  ATTR_parser_nodes___AConcreteMethPropdef____n_block(variable[0]) /*AConcreteMethPropdef::_n_block*/ =  variable[1] /*n*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[0]) /*PNode::parent=*/;
   }
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AMainMethPropdef].i] = 1;
+  return_label252: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AMainMethPropdef___replace_child(val_t  self, val_t  param0, val_t  param1) {
-  struct trace_t trace = {NULL, "parser_prod::AMainMethPropdef::replace_child (src/parser//parser_prod.nit:2930,5--2951:18)"};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  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*/) /*PNode::==*/)))))));
-  if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert failed: src/parser//parser_prod.nit:2932,9--32\n"); nit_exit(1);}
-  variable2 = ATTR_parser_nodes___AMethPropdef____n_kwredef( self) /*AMainMethPropdef::_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*/) /*TKwredef::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*PNode::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_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 failed: src/parser//parser_prod.nit:2936,3--31\n"); nit_exit(1);}
-      ATTR_parser_nodes___AMethPropdef____n_kwredef( self) /*AMainMethPropdef::_n_kwredef*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___AMethPropdef____n_kwredef( self) /*AMainMethPropdef::_n_kwredef*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label235;
-  }
-  variable2 = ATTR_parser_nodes___AConcreteMethPropdef____n_block( self) /*AMainMethPropdef::_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*/) /*PExpr::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*PNode::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_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 failed: src/parser//parser_prod.nit:2946,3--28\n"); nit_exit(1);}
-      ATTR_parser_nodes___AConcreteMethPropdef____n_block( self) /*AMainMethPropdef::_n_block*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___AConcreteMethPropdef____n_block( self) /*AMainMethPropdef::_n_block*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label235;
+  struct trace_t trace = {NULL, NULL, 3000, LOCATE_parser_prod___AMainMethPropdef___replace_child};
+  val_t variable[5];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Local variable */
+  variable[2] =  param1;
+  /* Register variable[3]: Method return value and escape marker */
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AMainMethPropdef___replace_child, LOCATE_parser_prod, 3002); nit_exit(1);}
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___AMethPropdef____n_kwredef(variable[0]) /*AMethPropdef::_n_kwredef*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*PNode::parent=*/;
+      /* Register variable[4]: Result */
+      variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
+      if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AMainMethPropdef___replace_child, LOCATE_parser_prod, 3006); nit_exit(1);}
+      ATTR_parser_nodes___AMethPropdef____n_kwredef(variable[0]) /*AMethPropdef::_n_kwredef*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      ATTR_parser_nodes___AMethPropdef____n_kwredef(variable[0]) /*AMethPropdef::_n_kwredef*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label253;
   }
-  return_label235: while(false);
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___AConcreteMethPropdef____n_block(variable[0]) /*AConcreteMethPropdef::_n_block*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*PNode::parent=*/;
+      /* Register variable[4]: Result */
+      variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
+      if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AMainMethPropdef___replace_child, LOCATE_parser_prod, 3016); nit_exit(1);}
+      ATTR_parser_nodes___AConcreteMethPropdef____n_block(variable[0]) /*AConcreteMethPropdef::_n_block*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      ATTR_parser_nodes___AConcreteMethPropdef____n_block(variable[0]) /*AConcreteMethPropdef::_n_block*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label253;
+  }
+  return_label253: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AMainMethPropdef___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AMainMethPropdef::visit_all (src/parser//parser_prod.nit:2955,5--2961:28)"};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___AMethPropdef____n_kwredef( self) /*AMainMethPropdef::_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*/) /*TKwredef::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AMethPropdef____n_kwredef( self) /*AMainMethPropdef::_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) /*AMainMethPropdef::_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*/) /*PExpr::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AConcreteMethPropdef____n_block( self) /*AMainMethPropdef::_n_block*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
+  struct trace_t trace = {NULL, NULL, 3025, LOCATE_parser_prod___AMainMethPropdef___visit_all};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AMethPropdef____n_kwredef(variable[0]) /*AMethPropdef::_n_kwredef*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AMethPropdef____n_kwredef(variable[0]) /*AMethPropdef::_n_kwredef*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AConcreteMethPropdef____n_block(variable[0]) /*AConcreteMethPropdef::_n_block*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AConcreteMethPropdef____n_block(variable[0]) /*AConcreteMethPropdef::_n_block*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  return_label254: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AMainMethPropdef___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AMainMethPropdef::visit_all_reverse (src/parser//parser_prod.nit:2965,5--2971:28)"};
-  val_t variable0;
-  val_t variable1;
+  struct trace_t trace = {NULL, NULL, 3035, LOCATE_parser_prod___AMainMethPropdef___visit_all_reverse};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AMethPropdef____n_kwredef(variable[0]) /*AMethPropdef::_n_kwredef*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AMethPropdef____n_kwredef(variable[0]) /*AMethPropdef::_n_kwredef*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AConcreteMethPropdef____n_block(variable[0]) /*AConcreteMethPropdef::_n_block*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AConcreteMethPropdef____n_block(variable[0]) /*AConcreteMethPropdef::_n_block*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  return_label255: while(false);
+  tracehead = trace.prev;
+  return;
+}
+void parser_prod___AMainMethPropdef___empty_init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 2982, LOCATE_parser_prod___AMainMethPropdef___empty_init};
+  val_t variable[2];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___AMethPropdef____n_kwredef( self) /*AMainMethPropdef::_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*/) /*TKwredef::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AMethPropdef____n_kwredef( self) /*AMainMethPropdef::_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) /*AMainMethPropdef::_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*/) /*PExpr::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AConcreteMethPropdef____n_block( self) /*AMainMethPropdef::_n_block*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AMainMethPropdef].i]) return;
+  /* Register variable[1]: Method return value and escape marker */
+  return_label256: while(false);
+  init_table[VAL2OBJ(variable[0])->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, 2984, LOCATE_parser_prod___AMainMethPropdef___init_amainmethpropdef};
+  val_t variable[5];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Local variable */
+  variable[2] =  param1;
+  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AMainMethPropdef].i]) return;
+  /* Register variable[3]: Method return value and escape marker */
+  CALL_parser_prod___AMainMethPropdef___empty_init(variable[0])(variable[0], init_table /*YYY*/) /*AMainMethPropdef::empty_init*/;
+  ATTR_parser_nodes___AMethPropdef____n_kwredef(variable[0]) /*AMethPropdef::_n_kwredef*/ =  variable[1] /*n_kwredef*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_kwredef*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_kwredef*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n_kwredef*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_kwredef*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n_kwredef*/)( variable[1] /*n_kwredef*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n_kwredef*/)( variable[1] /*n_kwredef*/, variable[0]) /*PNode::parent=*/;
+  }
+  ATTR_parser_nodes___AConcreteMethPropdef____n_block(variable[0]) /*AConcreteMethPropdef::_n_block*/ =  variable[2] /*n_block*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*n_block*/ ==  NIT_NULL /*null*/) || (( variable[2] /*n_block*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*n_block*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*n_block*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*n_block*/)( variable[2] /*n_block*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[2] /*n_block*/)( variable[2] /*n_block*/, variable[0]) /*PNode::parent=*/;
+  }
+  return_label257: while(false);
+  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AMainMethPropdef].i] = 1;
   tracehead = trace.prev;
   return;
 }
 void parser_prod___ATypePropdef___n_doc__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::ATypePropdef::n_doc= (src/parser//parser_prod.nit:2976,5--2980:20)"};
-  val_t variable0;
-  val_t variable1;
+  struct trace_t trace = {NULL, NULL, 3046, LOCATE_parser_prod___ATypePropdef___n_doc__eq};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  variable0 =  param0;
-  ATTR_parser_nodes___PPropdef____n_doc( self) /*ATypePropdef::_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*/) /*PDoc::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PDoc::parent=*/;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  ATTR_parser_nodes___PPropdef____n_doc(variable[0]) /*PPropdef::_n_doc*/ =  variable[1] /*n*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[0]) /*PNode::parent=*/;
   }
+  return_label258: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___ATypePropdef___n_kwredef__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::ATypePropdef::n_kwredef= (src/parser//parser_prod.nit:2983,5--2987:20)"};
-  val_t variable0;
-  val_t variable1;
+  struct trace_t trace = {NULL, NULL, 3053, LOCATE_parser_prod___ATypePropdef___n_kwredef__eq};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  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*/) /*TKwredef::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*TKwredef::parent=*/;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  ATTR_parser_nodes___ATypePropdef____n_kwredef(variable[0]) /*ATypePropdef::_n_kwredef*/ =  variable[1] /*n*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[0]) /*PNode::parent=*/;
   }
+  return_label259: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___ATypePropdef___n_visibility__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::ATypePropdef::n_visibility= (src/parser//parser_prod.nit:2990,5--2994:20)"};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  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*/) /*PVisibility::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PVisibility::parent=*/;
+  struct trace_t trace = {NULL, NULL, 3060, LOCATE_parser_prod___ATypePropdef___n_visibility__eq};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  ATTR_parser_nodes___ATypePropdef____n_visibility(variable[0]) /*ATypePropdef::_n_visibility*/ =  variable[1] /*n*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[0]) /*PNode::parent=*/;
   }
+  return_label260: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___ATypePropdef___n_kwtype__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::ATypePropdef::n_kwtype= (src/parser//parser_prod.nit:2997,5--3001:20)"};
-  val_t variable0;
-  val_t variable1;
+  struct trace_t trace = {NULL, NULL, 3067, LOCATE_parser_prod___ATypePropdef___n_kwtype__eq};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  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*/) /*TKwtype::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*TKwtype::parent=*/;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  ATTR_parser_nodes___ATypePropdef____n_kwtype(variable[0]) /*ATypePropdef::_n_kwtype*/ =  variable[1] /*n*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[0]) /*PNode::parent=*/;
   }
+  return_label261: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___ATypePropdef___n_id__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::ATypePropdef::n_id= (src/parser//parser_prod.nit:3004,5--3008:20)"};
-  val_t variable0;
-  val_t variable1;
+  struct trace_t trace = {NULL, NULL, 3074, LOCATE_parser_prod___ATypePropdef___n_id__eq};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  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*/) /*TClassid::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*TClassid::parent=*/;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  ATTR_parser_nodes___ATypePropdef____n_id(variable[0]) /*ATypePropdef::_n_id*/ =  variable[1] /*n*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[0]) /*PNode::parent=*/;
   }
+  return_label262: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___ATypePropdef___n_type__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::ATypePropdef::n_type= (src/parser//parser_prod.nit:3011,5--3015:20)"};
-  val_t variable0;
-  val_t variable1;
+  struct trace_t trace = {NULL, NULL, 3081, LOCATE_parser_prod___ATypePropdef___n_type__eq};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  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*/) /*PType::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PType::parent=*/;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  ATTR_parser_nodes___ATypePropdef____n_type(variable[0]) /*ATypePropdef::_n_type*/ =  variable[1] /*n*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[0]) /*PNode::parent=*/;
   }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___ATypePropdef___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, "parser_prod::ATypePropdef::empty_init (src/parser//parser_prod.nit:3019,5--27)"};
-  trace.prev = tracehead; tracehead = &trace;
-  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, "parser_prod::ATypePropdef::init_atypepropdef (src/parser//parser_prod.nit:3021,5--3052:22)"};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  val_t variable3;
-  val_t variable4;
-  val_t variable5;
-  val_t variable6;
-  trace.prev = tracehead; tracehead = &trace;
-  variable0 =  param0;
-  variable1 =  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) /*ATypePropdef::_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*/) /*PDoc::==*/)))))));
-  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) /*PDoc::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*/) /*TKwredef::==*/)))))));
-  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) /*TKwredef::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*/) /*PVisibility::==*/)))))));
-  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) /*PVisibility::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*/) /*TKwtype::==*/)))))));
-  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) /*TKwtype::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*/) /*TClassid::==*/)))))));
-  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) /*TClassid::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*/) /*PType::==*/)))))));
-  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) /*PType::parent=*/;
-  }
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ATypePropdef].i] = 1;
+  return_label263: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___ATypePropdef___replace_child(val_t  self, val_t  param0, val_t  param1) {
-  struct trace_t trace = {NULL, "parser_prod::ATypePropdef::replace_child (src/parser//parser_prod.nit:3056,5--3117:18)"};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  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*/) /*PNode::==*/)))))));
-  if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert failed: src/parser//parser_prod.nit:3058,9--32\n"); nit_exit(1);}
-  variable2 = ATTR_parser_nodes___PPropdef____n_doc( self) /*ATypePropdef::_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*/) /*PDoc::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*PNode::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_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 failed: src/parser//parser_prod.nit:3062,3--27\n"); nit_exit(1);}
-      ATTR_parser_nodes___PPropdef____n_doc( self) /*ATypePropdef::_n_doc*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___PPropdef____n_doc( self) /*ATypePropdef::_n_doc*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label246;
-  }
-  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*/) /*TKwredef::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*PNode::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_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 failed: src/parser//parser_prod.nit:3072,3--31\n"); nit_exit(1);}
-      ATTR_parser_nodes___ATypePropdef____n_kwredef( self) /*ATypePropdef::_n_kwredef*/ =  variable1 /*new_child*/;
+  struct trace_t trace = {NULL, NULL, 3127, LOCATE_parser_prod___ATypePropdef___replace_child};
+  val_t variable[5];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Local variable */
+  variable[2] =  param1;
+  /* Register variable[3]: Method return value and escape marker */
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ATypePropdef___replace_child, LOCATE_parser_prod, 3129); nit_exit(1);}
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___PPropdef____n_doc(variable[0]) /*PPropdef::_n_doc*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*PNode::parent=*/;
+      /* Register variable[4]: Result */
+      variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
+      if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ATypePropdef___replace_child, LOCATE_parser_prod, 3133); nit_exit(1);}
+      ATTR_parser_nodes___PPropdef____n_doc(variable[0]) /*PPropdef::_n_doc*/ =  variable[2] /*new_child*/;
     } else { /*if*/
-      ATTR_parser_nodes___ATypePropdef____n_kwredef( self) /*ATypePropdef::_n_kwredef*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label246;
-  }
-  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*/) /*PVisibility::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*PNode::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_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 failed: src/parser//parser_prod.nit:3082,3--34\n"); nit_exit(1);}
-      ATTR_parser_nodes___ATypePropdef____n_visibility( self) /*ATypePropdef::_n_visibility*/ =  variable1 /*new_child*/;
+      ATTR_parser_nodes___PPropdef____n_doc(variable[0]) /*PPropdef::_n_doc*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label264;
+  }
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___ATypePropdef____n_kwredef(variable[0]) /*ATypePropdef::_n_kwredef*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*PNode::parent=*/;
+      /* Register variable[4]: Result */
+      variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
+      if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ATypePropdef___replace_child, LOCATE_parser_prod, 3143); nit_exit(1);}
+      ATTR_parser_nodes___ATypePropdef____n_kwredef(variable[0]) /*ATypePropdef::_n_kwredef*/ =  variable[2] /*new_child*/;
     } else { /*if*/
-      ATTR_parser_nodes___ATypePropdef____n_visibility( self) /*ATypePropdef::_n_visibility*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label246;
-  }
-  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*/) /*TKwtype::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*PNode::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_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 failed: src/parser//parser_prod.nit:3092,3--30\n"); nit_exit(1);}
-      ATTR_parser_nodes___ATypePropdef____n_kwtype( self) /*ATypePropdef::_n_kwtype*/ =  variable1 /*new_child*/;
+      ATTR_parser_nodes___ATypePropdef____n_kwredef(variable[0]) /*ATypePropdef::_n_kwredef*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label264;
+  }
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___ATypePropdef____n_visibility(variable[0]) /*ATypePropdef::_n_visibility*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*PNode::parent=*/;
+      /* Register variable[4]: Result */
+      variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
+      if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ATypePropdef___replace_child, LOCATE_parser_prod, 3153); nit_exit(1);}
+      ATTR_parser_nodes___ATypePropdef____n_visibility(variable[0]) /*ATypePropdef::_n_visibility*/ =  variable[2] /*new_child*/;
     } else { /*if*/
-      ATTR_parser_nodes___ATypePropdef____n_kwtype( self) /*ATypePropdef::_n_kwtype*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label246;
-  }
-  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*/) /*TClassid::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*PNode::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_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 failed: src/parser//parser_prod.nit:3102,3--31\n"); nit_exit(1);}
-      ATTR_parser_nodes___ATypePropdef____n_id( self) /*ATypePropdef::_n_id*/ =  variable1 /*new_child*/;
+      ATTR_parser_nodes___ATypePropdef____n_visibility(variable[0]) /*ATypePropdef::_n_visibility*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label264;
+  }
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___ATypePropdef____n_kwtype(variable[0]) /*ATypePropdef::_n_kwtype*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*PNode::parent=*/;
+      /* Register variable[4]: Result */
+      variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_TKwtype, ID_TKwtype)) /*cast TKwtype*/;
+      if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ATypePropdef___replace_child, LOCATE_parser_prod, 3163); nit_exit(1);}
+      ATTR_parser_nodes___ATypePropdef____n_kwtype(variable[0]) /*ATypePropdef::_n_kwtype*/ =  variable[2] /*new_child*/;
     } else { /*if*/
-      ATTR_parser_nodes___ATypePropdef____n_id( self) /*ATypePropdef::_n_id*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label246;
-  }
-  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*/) /*PType::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*PNode::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_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 failed: src/parser//parser_prod.nit:3112,3--28\n"); nit_exit(1);}
-      ATTR_parser_nodes___ATypePropdef____n_type( self) /*ATypePropdef::_n_type*/ =  variable1 /*new_child*/;
+      ATTR_parser_nodes___ATypePropdef____n_kwtype(variable[0]) /*ATypePropdef::_n_kwtype*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label264;
+  }
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___ATypePropdef____n_id(variable[0]) /*ATypePropdef::_n_id*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*PNode::parent=*/;
+      /* Register variable[4]: Result */
+      variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_TClassid, ID_TClassid)) /*cast TClassid*/;
+      if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ATypePropdef___replace_child, LOCATE_parser_prod, 3173); nit_exit(1);}
+      ATTR_parser_nodes___ATypePropdef____n_id(variable[0]) /*ATypePropdef::_n_id*/ =  variable[2] /*new_child*/;
     } else { /*if*/
-      ATTR_parser_nodes___ATypePropdef____n_type( self) /*ATypePropdef::_n_type*/ =  NIT_NULL /*null*/;
+      ATTR_parser_nodes___ATypePropdef____n_id(variable[0]) /*ATypePropdef::_n_id*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label264;
+  }
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___ATypePropdef____n_type(variable[0]) /*ATypePropdef::_n_type*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*PNode::parent=*/;
+      /* Register variable[4]: Result */
+      variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PType, ID_PType)) /*cast PType*/;
+      if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ATypePropdef___replace_child, LOCATE_parser_prod, 3183); nit_exit(1);}
+      ATTR_parser_nodes___ATypePropdef____n_type(variable[0]) /*ATypePropdef::_n_type*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      ATTR_parser_nodes___ATypePropdef____n_type(variable[0]) /*ATypePropdef::_n_type*/ =  NIT_NULL /*null*/;
     }
-    goto return_label246;
+    goto return_label264;
   }
-  return_label246: while(false);
+  return_label264: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___ATypePropdef___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::ATypePropdef::visit_all (src/parser//parser_prod.nit:3121,5--3139:27)"};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___PPropdef____n_doc( self) /*ATypePropdef::_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*/) /*PDoc::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___PPropdef____n_doc( self) /*ATypePropdef::_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*/) /*TKwredef::==*/)))))));
-  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*/) /*PVisibility::==*/)))))));
-  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*/) /*TKwtype::==*/)))))));
-  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*/) /*TClassid::==*/)))))));
-  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*/) /*PType::==*/)))))));
-  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*/;
-  }
+  struct trace_t trace = {NULL, NULL, 3192, LOCATE_parser_prod___ATypePropdef___visit_all};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___PPropdef____n_doc(variable[0]) /*PPropdef::_n_doc*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___PPropdef____n_doc(variable[0]) /*PPropdef::_n_doc*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___ATypePropdef____n_kwredef(variable[0]) /*ATypePropdef::_n_kwredef*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___ATypePropdef____n_kwredef(variable[0]) /*ATypePropdef::_n_kwredef*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___ATypePropdef____n_visibility(variable[0]) /*ATypePropdef::_n_visibility*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___ATypePropdef____n_visibility(variable[0]) /*ATypePropdef::_n_visibility*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___ATypePropdef____n_kwtype(variable[0]) /*ATypePropdef::_n_kwtype*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___ATypePropdef____n_kwtype(variable[0]) /*ATypePropdef::_n_kwtype*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___ATypePropdef____n_id(variable[0]) /*ATypePropdef::_n_id*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___ATypePropdef____n_id(variable[0]) /*ATypePropdef::_n_id*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___ATypePropdef____n_type(variable[0]) /*ATypePropdef::_n_type*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___ATypePropdef____n_type(variable[0]) /*ATypePropdef::_n_type*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  return_label265: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___ATypePropdef___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::ATypePropdef::visit_all_reverse (src/parser//parser_prod.nit:3143,5--3161:27)"};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___PPropdef____n_doc( self) /*ATypePropdef::_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*/) /*PDoc::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___PPropdef____n_doc( self) /*ATypePropdef::_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*/) /*TKwredef::==*/)))))));
-  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*/) /*PVisibility::==*/)))))));
-  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*/) /*TKwtype::==*/)))))));
-  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*/) /*TClassid::==*/)))))));
-  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*/) /*PType::==*/)))))));
-  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*/;
+  struct trace_t trace = {NULL, NULL, 3214, LOCATE_parser_prod___ATypePropdef___visit_all_reverse};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___PPropdef____n_doc(variable[0]) /*PPropdef::_n_doc*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___PPropdef____n_doc(variable[0]) /*PPropdef::_n_doc*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___ATypePropdef____n_kwredef(variable[0]) /*ATypePropdef::_n_kwredef*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___ATypePropdef____n_kwredef(variable[0]) /*ATypePropdef::_n_kwredef*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___ATypePropdef____n_visibility(variable[0]) /*ATypePropdef::_n_visibility*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___ATypePropdef____n_visibility(variable[0]) /*ATypePropdef::_n_visibility*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___ATypePropdef____n_kwtype(variable[0]) /*ATypePropdef::_n_kwtype*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___ATypePropdef____n_kwtype(variable[0]) /*ATypePropdef::_n_kwtype*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___ATypePropdef____n_id(variable[0]) /*ATypePropdef::_n_id*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___ATypePropdef____n_id(variable[0]) /*ATypePropdef::_n_id*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___ATypePropdef____n_type(variable[0]) /*ATypePropdef::_n_type*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___ATypePropdef____n_type(variable[0]) /*ATypePropdef::_n_type*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
+  return_label266: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AReadAble___n_kwredef__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AReadAble::n_kwredef= (src/parser//parser_prod.nit:3166,5--3170:20)"};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___ATypePropdef___empty_init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 3089, LOCATE_parser_prod___ATypePropdef___empty_init};
+  val_t variable[2];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  variable0 =  param0;
-  ATTR_parser_nodes___PAble____n_kwredef( self) /*AReadAble::_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*/) /*TKwredef::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*TKwredef::parent=*/;
-  }
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ATypePropdef].i]) return;
+  /* Register variable[1]: Method return value and escape marker */
+  return_label267: while(false);
+  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ATypePropdef].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AReadAble___n_kwreadable__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AReadAble::n_kwreadable= (src/parser//parser_prod.nit:3173,5--3177:20)"};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  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*/) /*TKwreadable::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*TKwreadable::parent=*/;
-  }
+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, 3091, LOCATE_parser_prod___ATypePropdef___init_atypepropdef};
+  val_t variable[9];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Local variable */
+  variable[2] =  param1;
+  /* Register variable[3]: Local variable */
+  variable[3] =  param2;
+  /* Register variable[4]: Local variable */
+  variable[4] =  param3;
+  /* Register variable[5]: Local variable */
+  variable[5] =  param4;
+  /* Register variable[6]: Local variable */
+  variable[6] =  param5;
+  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ATypePropdef].i]) return;
+  /* Register variable[7]: Method return value and escape marker */
+  CALL_parser_prod___ATypePropdef___empty_init(variable[0])(variable[0], init_table /*YYY*/) /*ATypePropdef::empty_init*/;
+  ATTR_parser_nodes___PPropdef____n_doc(variable[0]) /*PPropdef::_n_doc*/ =  variable[1] /*n_doc*/;
+  /* Register variable[8]: Result */
+  variable[8] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_doc*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_doc*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n_doc*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_doc*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n_doc*/)( variable[1] /*n_doc*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[8])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n_doc*/)( variable[1] /*n_doc*/, variable[0]) /*PNode::parent=*/;
+  }
+  ATTR_parser_nodes___ATypePropdef____n_kwredef(variable[0]) /*ATypePropdef::_n_kwredef*/ =  variable[2] /*n_kwredef*/;
+  /* Register variable[8]: Result */
+  variable[8] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*n_kwredef*/ ==  NIT_NULL /*null*/) || (( variable[2] /*n_kwredef*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*n_kwredef*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*n_kwredef*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*n_kwredef*/)( variable[2] /*n_kwredef*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[8])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[2] /*n_kwredef*/)( variable[2] /*n_kwredef*/, variable[0]) /*PNode::parent=*/;
+  }
+  ATTR_parser_nodes___ATypePropdef____n_visibility(variable[0]) /*ATypePropdef::_n_visibility*/ =  variable[3] /*n_visibility*/;
+  /* Register variable[8]: Result */
+  variable[8] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[3] /*n_visibility*/ ==  NIT_NULL /*null*/) || (( variable[3] /*n_visibility*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[3] /*n_visibility*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[3] /*n_visibility*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[3] /*n_visibility*/)( variable[3] /*n_visibility*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[8])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[3] /*n_visibility*/)( variable[3] /*n_visibility*/, variable[0]) /*PNode::parent=*/;
+  }
+  ATTR_parser_nodes___ATypePropdef____n_kwtype(variable[0]) /*ATypePropdef::_n_kwtype*/ =  variable[4] /*n_kwtype*/;
+  /* Register variable[8]: Result */
+  variable[8] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[4] /*n_kwtype*/ ==  NIT_NULL /*null*/) || (( variable[4] /*n_kwtype*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[4] /*n_kwtype*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[4] /*n_kwtype*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[4] /*n_kwtype*/)( variable[4] /*n_kwtype*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[8])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[4] /*n_kwtype*/)( variable[4] /*n_kwtype*/, variable[0]) /*PNode::parent=*/;
+  }
+  ATTR_parser_nodes___ATypePropdef____n_id(variable[0]) /*ATypePropdef::_n_id*/ =  variable[5] /*n_id*/;
+  /* Register variable[8]: Result */
+  variable[8] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[5] /*n_id*/ ==  NIT_NULL /*null*/) || (( variable[5] /*n_id*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[5] /*n_id*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[5] /*n_id*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[5] /*n_id*/)( variable[5] /*n_id*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[8])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[5] /*n_id*/)( variable[5] /*n_id*/, variable[0]) /*PNode::parent=*/;
+  }
+  ATTR_parser_nodes___ATypePropdef____n_type(variable[0]) /*ATypePropdef::_n_type*/ =  variable[6] /*n_type*/;
+  /* Register variable[8]: Result */
+  variable[8] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[6] /*n_type*/ ==  NIT_NULL /*null*/) || (( variable[6] /*n_type*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[6] /*n_type*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[6] /*n_type*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[6] /*n_type*/)( variable[6] /*n_type*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[8])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[6] /*n_type*/)( variable[6] /*n_type*/, variable[0]) /*PNode::parent=*/;
+  }
+  return_label268: while(false);
+  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ATypePropdef].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AReadAble___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, "parser_prod::AReadAble::empty_init (src/parser//parser_prod.nit:3181,5--27)"};
+void parser_prod___AReadAble___n_kwredef__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 3237, LOCATE_parser_prod___AReadAble___n_kwredef__eq};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AReadAble].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AReadAble].i] = 1;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  ATTR_parser_nodes___PAble____n_kwredef(variable[0]) /*PAble::_n_kwredef*/ =  variable[1] /*n*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[0]) /*PNode::parent=*/;
+  }
+  return_label269: while(false);
   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, "parser_prod::AReadAble::init_areadable (src/parser//parser_prod.nit:3183,5--3194:28)"};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
+void parser_prod___AReadAble___n_kwreadable__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 3244, LOCATE_parser_prod___AReadAble___n_kwreadable__eq};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  variable0 =  param0;
-  variable1 =  param1;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AReadAble].i]) return;
-  ATTR_parser_nodes___PAble____n_kwredef( self) /*AReadAble::_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*/) /*TKwredef::==*/)))))));
-  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) /*TKwredef::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*/) /*TKwreadable::==*/)))))));
-  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) /*TKwreadable::parent=*/;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  ATTR_parser_nodes___AReadAble____n_kwreadable(variable[0]) /*AReadAble::_n_kwreadable*/ =  variable[1] /*n*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[0]) /*PNode::parent=*/;
   }
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AReadAble].i] = 1;
+  return_label270: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AReadAble___replace_child(val_t  self, val_t  param0, val_t  param1) {
-  struct trace_t trace = {NULL, "parser_prod::AReadAble::replace_child (src/parser//parser_prod.nit:3198,5--3219:18)"};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  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*/) /*PNode::==*/)))))));
-  if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert failed: src/parser//parser_prod.nit:3200,9--32\n"); nit_exit(1);}
-  variable2 = ATTR_parser_nodes___PAble____n_kwredef( self) /*AReadAble::_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*/) /*TKwredef::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*PNode::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_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 failed: src/parser//parser_prod.nit:3204,3--31\n"); nit_exit(1);}
-      ATTR_parser_nodes___PAble____n_kwredef( self) /*AReadAble::_n_kwredef*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___PAble____n_kwredef( self) /*AReadAble::_n_kwredef*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label253;
-  }
-  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*/) /*TKwreadable::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*PNode::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_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 failed: src/parser//parser_prod.nit:3214,3--34\n"); nit_exit(1);}
-      ATTR_parser_nodes___AReadAble____n_kwreadable( self) /*AReadAble::_n_kwreadable*/ =  variable1 /*new_child*/;
+  struct trace_t trace = {NULL, NULL, 3270, LOCATE_parser_prod___AReadAble___replace_child};
+  val_t variable[5];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Local variable */
+  variable[2] =  param1;
+  /* Register variable[3]: Method return value and escape marker */
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AReadAble___replace_child, LOCATE_parser_prod, 3272); nit_exit(1);}
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___PAble____n_kwredef(variable[0]) /*PAble::_n_kwredef*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*PNode::parent=*/;
+      /* Register variable[4]: Result */
+      variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
+      if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AReadAble___replace_child, LOCATE_parser_prod, 3276); nit_exit(1);}
+      ATTR_parser_nodes___PAble____n_kwredef(variable[0]) /*PAble::_n_kwredef*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      ATTR_parser_nodes___PAble____n_kwredef(variable[0]) /*PAble::_n_kwredef*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label271;
+  }
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___AReadAble____n_kwreadable(variable[0]) /*AReadAble::_n_kwreadable*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*PNode::parent=*/;
+      /* Register variable[4]: Result */
+      variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_TKwreadable, ID_TKwreadable)) /*cast TKwreadable*/;
+      if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AReadAble___replace_child, LOCATE_parser_prod, 3286); nit_exit(1);}
+      ATTR_parser_nodes___AReadAble____n_kwreadable(variable[0]) /*AReadAble::_n_kwreadable*/ =  variable[2] /*new_child*/;
     } else { /*if*/
-      ATTR_parser_nodes___AReadAble____n_kwreadable( self) /*AReadAble::_n_kwreadable*/ =  NIT_NULL /*null*/;
+      ATTR_parser_nodes___AReadAble____n_kwreadable(variable[0]) /*AReadAble::_n_kwreadable*/ =  NIT_NULL /*null*/;
     }
-    goto return_label253;
+    goto return_label271;
   }
-  return_label253: while(false);
+  return_label271: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AReadAble___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AReadAble::visit_all (src/parser//parser_prod.nit:3223,5--3229:33)"};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___PAble____n_kwredef( self) /*AReadAble::_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*/) /*TKwredef::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___PAble____n_kwredef( self) /*AReadAble::_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*/) /*TKwreadable::==*/)))))));
-  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*/;
+  struct trace_t trace = {NULL, NULL, 3295, LOCATE_parser_prod___AReadAble___visit_all};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___PAble____n_kwredef(variable[0]) /*PAble::_n_kwredef*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___PAble____n_kwredef(variable[0]) /*PAble::_n_kwredef*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AReadAble____n_kwreadable(variable[0]) /*AReadAble::_n_kwreadable*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AReadAble____n_kwreadable(variable[0]) /*AReadAble::_n_kwreadable*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
+  return_label272: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AReadAble___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AReadAble::visit_all_reverse (src/parser//parser_prod.nit:3233,5--3239:33)"};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___PAble____n_kwredef( self) /*AReadAble::_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*/) /*TKwredef::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___PAble____n_kwredef( self) /*AReadAble::_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*/) /*TKwreadable::==*/)))))));
-  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*/;
-  }
+  struct trace_t trace = {NULL, NULL, 3305, LOCATE_parser_prod___AReadAble___visit_all_reverse};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___PAble____n_kwredef(variable[0]) /*PAble::_n_kwredef*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___PAble____n_kwredef(variable[0]) /*PAble::_n_kwredef*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AReadAble____n_kwreadable(variable[0]) /*AReadAble::_n_kwreadable*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AReadAble____n_kwreadable(variable[0]) /*AReadAble::_n_kwreadable*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  return_label273: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AWriteAble___n_kwredef__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AWriteAble::n_kwredef= (src/parser//parser_prod.nit:3244,5--3248:20)"};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___AReadAble___empty_init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 3252, LOCATE_parser_prod___AReadAble___empty_init};
+  val_t variable[2];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  variable0 =  param0;
-  ATTR_parser_nodes___PAble____n_kwredef( self) /*AWriteAble::_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*/) /*TKwredef::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*TKwredef::parent=*/;
-  }
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AReadAble].i]) return;
+  /* Register variable[1]: Method return value and escape marker */
+  return_label274: while(false);
+  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AReadAble].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AWriteAble___n_kwwritable__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AWriteAble::n_kwwritable= (src/parser//parser_prod.nit:3251,5--3255:20)"};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  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*/) /*TKwwritable::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*TKwwritable::parent=*/;
-  }
+void parser_prod___AReadAble___init_areadable(val_t  self, val_t  param0, val_t  param1, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 3254, LOCATE_parser_prod___AReadAble___init_areadable};
+  val_t variable[5];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Local variable */
+  variable[2] =  param1;
+  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AReadAble].i]) return;
+  /* Register variable[3]: Method return value and escape marker */
+  CALL_parser_prod___AReadAble___empty_init(variable[0])(variable[0], init_table /*YYY*/) /*AReadAble::empty_init*/;
+  ATTR_parser_nodes___PAble____n_kwredef(variable[0]) /*PAble::_n_kwredef*/ =  variable[1] /*n_kwredef*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_kwredef*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_kwredef*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n_kwredef*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_kwredef*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n_kwredef*/)( variable[1] /*n_kwredef*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n_kwredef*/)( variable[1] /*n_kwredef*/, variable[0]) /*PNode::parent=*/;
+  }
+  ATTR_parser_nodes___AReadAble____n_kwreadable(variable[0]) /*AReadAble::_n_kwreadable*/ =  variable[2] /*n_kwreadable*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*n_kwreadable*/ ==  NIT_NULL /*null*/) || (( variable[2] /*n_kwreadable*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*n_kwreadable*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*n_kwreadable*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*n_kwreadable*/)( variable[2] /*n_kwreadable*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[2] /*n_kwreadable*/)( variable[2] /*n_kwreadable*/, variable[0]) /*PNode::parent=*/;
+  }
+  return_label275: while(false);
+  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AReadAble].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AWriteAble___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, "parser_prod::AWriteAble::empty_init (src/parser//parser_prod.nit:3259,5--27)"};
+void parser_prod___AWriteAble___n_kwredef__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 3316, LOCATE_parser_prod___AWriteAble___n_kwredef__eq};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AWriteAble].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AWriteAble].i] = 1;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  ATTR_parser_nodes___PAble____n_kwredef(variable[0]) /*PAble::_n_kwredef*/ =  variable[1] /*n*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[0]) /*PNode::parent=*/;
+  }
+  return_label276: while(false);
   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, "parser_prod::AWriteAble::init_awriteable (src/parser//parser_prod.nit:3261,5--3272:28)"};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
+void parser_prod___AWriteAble___n_kwwritable__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 3323, LOCATE_parser_prod___AWriteAble___n_kwwritable__eq};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  variable0 =  param0;
-  variable1 =  param1;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AWriteAble].i]) return;
-  ATTR_parser_nodes___PAble____n_kwredef( self) /*AWriteAble::_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*/) /*TKwredef::==*/)))))));
-  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) /*TKwredef::parent=*/;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  ATTR_parser_nodes___AWriteAble____n_kwwritable(variable[0]) /*AWriteAble::_n_kwwritable*/ =  variable[1] /*n*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[0]) /*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*/) /*TKwwritable::==*/)))))));
-  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) /*TKwwritable::parent=*/;
-  }
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AWriteAble].i] = 1;
+  return_label277: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AWriteAble___replace_child(val_t  self, val_t  param0, val_t  param1) {
-  struct trace_t trace = {NULL, "parser_prod::AWriteAble::replace_child (src/parser//parser_prod.nit:3276,5--3297:18)"};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  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*/) /*PNode::==*/)))))));
-  if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert failed: src/parser//parser_prod.nit:3278,9--32\n"); nit_exit(1);}
-  variable2 = ATTR_parser_nodes___PAble____n_kwredef( self) /*AWriteAble::_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*/) /*TKwredef::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*PNode::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_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 failed: src/parser//parser_prod.nit:3282,3--31\n"); nit_exit(1);}
-      ATTR_parser_nodes___PAble____n_kwredef( self) /*AWriteAble::_n_kwredef*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___PAble____n_kwredef( self) /*AWriteAble::_n_kwredef*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label260;
-  }
-  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*/) /*TKwwritable::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*PNode::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_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 failed: src/parser//parser_prod.nit:3292,3--34\n"); 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_label260;
+  struct trace_t trace = {NULL, NULL, 3349, LOCATE_parser_prod___AWriteAble___replace_child};
+  val_t variable[5];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Local variable */
+  variable[2] =  param1;
+  /* Register variable[3]: Method return value and escape marker */
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AWriteAble___replace_child, LOCATE_parser_prod, 3351); nit_exit(1);}
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___PAble____n_kwredef(variable[0]) /*PAble::_n_kwredef*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*PNode::parent=*/;
+      /* Register variable[4]: Result */
+      variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
+      if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AWriteAble___replace_child, LOCATE_parser_prod, 3355); nit_exit(1);}
+      ATTR_parser_nodes___PAble____n_kwredef(variable[0]) /*PAble::_n_kwredef*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      ATTR_parser_nodes___PAble____n_kwredef(variable[0]) /*PAble::_n_kwredef*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label278;
   }
-  return_label260: while(false);
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___AWriteAble____n_kwwritable(variable[0]) /*AWriteAble::_n_kwwritable*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*PNode::parent=*/;
+      /* Register variable[4]: Result */
+      variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_TKwwritable, ID_TKwwritable)) /*cast TKwwritable*/;
+      if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AWriteAble___replace_child, LOCATE_parser_prod, 3365); nit_exit(1);}
+      ATTR_parser_nodes___AWriteAble____n_kwwritable(variable[0]) /*AWriteAble::_n_kwwritable*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      ATTR_parser_nodes___AWriteAble____n_kwwritable(variable[0]) /*AWriteAble::_n_kwwritable*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label278;
+  }
+  return_label278: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AWriteAble___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AWriteAble::visit_all (src/parser//parser_prod.nit:3301,5--3307:33)"};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___PAble____n_kwredef( self) /*AWriteAble::_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*/) /*TKwredef::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___PAble____n_kwredef( self) /*AWriteAble::_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*/) /*TKwwritable::==*/)))))));
-  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*/;
-  }
+  struct trace_t trace = {NULL, NULL, 3374, LOCATE_parser_prod___AWriteAble___visit_all};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___PAble____n_kwredef(variable[0]) /*PAble::_n_kwredef*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___PAble____n_kwredef(variable[0]) /*PAble::_n_kwredef*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AWriteAble____n_kwwritable(variable[0]) /*AWriteAble::_n_kwwritable*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AWriteAble____n_kwwritable(variable[0]) /*AWriteAble::_n_kwwritable*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  return_label279: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AWriteAble___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AWriteAble::visit_all_reverse (src/parser//parser_prod.nit:3311,5--3317:33)"};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___PAble____n_kwredef( self) /*AWriteAble::_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*/) /*TKwredef::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___PAble____n_kwredef( self) /*AWriteAble::_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*/) /*TKwwritable::==*/)))))));
-  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*/;
-  }
+  struct trace_t trace = {NULL, NULL, 3384, LOCATE_parser_prod___AWriteAble___visit_all_reverse};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___PAble____n_kwredef(variable[0]) /*PAble::_n_kwredef*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___PAble____n_kwredef(variable[0]) /*PAble::_n_kwredef*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AWriteAble____n_kwwritable(variable[0]) /*AWriteAble::_n_kwwritable*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AWriteAble____n_kwwritable(variable[0]) /*AWriteAble::_n_kwwritable*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  return_label280: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AIdMethid___n_id__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AIdMethid::n_id= (src/parser//parser_prod.nit:3322,5--3326:20)"};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___AWriteAble___empty_init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 3331, LOCATE_parser_prod___AWriteAble___empty_init};
+  val_t variable[2];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  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*/) /*TId::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*TId::parent=*/;
-  }
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AWriteAble].i]) return;
+  /* Register variable[1]: Method return value and escape marker */
+  return_label281: while(false);
+  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AWriteAble].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AIdMethid___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, "parser_prod::AIdMethid::empty_init (src/parser//parser_prod.nit:3330,5--27)"};
-  trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AIdMethid].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AIdMethid].i] = 1;
+void parser_prod___AWriteAble___init_awriteable(val_t  self, val_t  param0, val_t  param1, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 3333, LOCATE_parser_prod___AWriteAble___init_awriteable};
+  val_t variable[5];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Local variable */
+  variable[2] =  param1;
+  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AWriteAble].i]) return;
+  /* Register variable[3]: Method return value and escape marker */
+  CALL_parser_prod___AWriteAble___empty_init(variable[0])(variable[0], init_table /*YYY*/) /*AWriteAble::empty_init*/;
+  ATTR_parser_nodes___PAble____n_kwredef(variable[0]) /*PAble::_n_kwredef*/ =  variable[1] /*n_kwredef*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_kwredef*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_kwredef*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n_kwredef*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_kwredef*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n_kwredef*/)( variable[1] /*n_kwredef*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n_kwredef*/)( variable[1] /*n_kwredef*/, variable[0]) /*PNode::parent=*/;
+  }
+  ATTR_parser_nodes___AWriteAble____n_kwwritable(variable[0]) /*AWriteAble::_n_kwwritable*/ =  variable[2] /*n_kwwritable*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*n_kwwritable*/ ==  NIT_NULL /*null*/) || (( variable[2] /*n_kwwritable*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*n_kwwritable*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*n_kwwritable*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*n_kwwritable*/)( variable[2] /*n_kwwritable*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[2] /*n_kwwritable*/)( variable[2] /*n_kwwritable*/, variable[0]) /*PNode::parent=*/;
+  }
+  return_label282: while(false);
+  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AWriteAble].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, "parser_prod::AIdMethid::init_aidmethid (src/parser//parser_prod.nit:3332,5--3338:20)"};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___AIdMethid___n_id__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 3395, LOCATE_parser_prod___AIdMethid___n_id__eq};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  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*/) /*TId::==*/)))))));
-  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) /*TId::parent=*/;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  ATTR_parser_nodes___AIdMethid____n_id(variable[0]) /*AIdMethid::_n_id*/ =  variable[1] /*n*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[0]) /*PNode::parent=*/;
   }
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AIdMethid].i] = 1;
+  return_label283: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AIdMethid___replace_child(val_t  self, val_t  param0, val_t  param1) {
-  struct trace_t trace = {NULL, "parser_prod::AIdMethid::replace_child (src/parser//parser_prod.nit:3342,5--3353:18)"};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  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*/) /*PNode::==*/)))))));
-  if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert failed: src/parser//parser_prod.nit:3344,9--32\n"); 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*/) /*TId::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*PNode::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_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 failed: src/parser//parser_prod.nit:3348,3--26\n"); 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_label266;
+  struct trace_t trace = {NULL, NULL, 3416, LOCATE_parser_prod___AIdMethid___replace_child};
+  val_t variable[5];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Local variable */
+  variable[2] =  param1;
+  /* Register variable[3]: Method return value and escape marker */
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AIdMethid___replace_child, LOCATE_parser_prod, 3418); nit_exit(1);}
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___AIdMethid____n_id(variable[0]) /*AIdMethid::_n_id*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*PNode::parent=*/;
+      /* Register variable[4]: Result */
+      variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_TId, ID_TId)) /*cast TId*/;
+      if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AIdMethid___replace_child, LOCATE_parser_prod, 3422); nit_exit(1);}
+      ATTR_parser_nodes___AIdMethid____n_id(variable[0]) /*AIdMethid::_n_id*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      ATTR_parser_nodes___AIdMethid____n_id(variable[0]) /*AIdMethid::_n_id*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label284;
   }
-  return_label266: while(false);
+  return_label284: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AIdMethid___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AIdMethid::visit_all (src/parser//parser_prod.nit:3357,5--3360:25)"};
-  val_t variable0;
-  val_t variable1;
+  struct trace_t trace = {NULL, NULL, 3431, LOCATE_parser_prod___AIdMethid___visit_all};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  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*/) /*TId::==*/)))))));
-  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*/;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AIdMethid____n_id(variable[0]) /*AIdMethid::_n_id*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AIdMethid____n_id(variable[0]) /*AIdMethid::_n_id*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
+  return_label285: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AIdMethid___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AIdMethid::visit_all_reverse (src/parser//parser_prod.nit:3364,5--3367:25)"};
-  val_t variable0;
-  val_t variable1;
+  struct trace_t trace = {NULL, NULL, 3438, LOCATE_parser_prod___AIdMethid___visit_all_reverse};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  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*/) /*TId::==*/)))))));
-  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*/;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AIdMethid____n_id(variable[0]) /*AIdMethid::_n_id*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AIdMethid____n_id(variable[0]) /*AIdMethid::_n_id*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
+  return_label286: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___APlusMethid___n_plus__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::APlusMethid::n_plus= (src/parser//parser_prod.nit:3372,5--3376:20)"};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___AIdMethid___empty_init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 3403, LOCATE_parser_prod___AIdMethid___empty_init};
+  val_t variable[2];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  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*/) /*TPlus::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*TPlus::parent=*/;
-  }
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AIdMethid].i]) return;
+  /* Register variable[1]: Method return value and escape marker */
+  return_label287: while(false);
+  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AIdMethid].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser_prod___APlusMethid___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, "parser_prod::APlusMethid::empty_init (src/parser//parser_prod.nit:3380,5--27)"};
+void parser_prod___AIdMethid___init_aidmethid(val_t  self, val_t  param0, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 3405, LOCATE_parser_prod___AIdMethid___init_aidmethid};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_APlusMethid].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_APlusMethid].i] = 1;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AIdMethid].i]) return;
+  /* Register variable[2]: Method return value and escape marker */
+  CALL_parser_prod___AIdMethid___empty_init(variable[0])(variable[0], init_table /*YYY*/) /*AIdMethid::empty_init*/;
+  ATTR_parser_nodes___AIdMethid____n_id(variable[0]) /*AIdMethid::_n_id*/ =  variable[1] /*n_id*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_id*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_id*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n_id*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_id*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n_id*/)( variable[1] /*n_id*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n_id*/)( variable[1] /*n_id*/, variable[0]) /*PNode::parent=*/;
+  }
+  return_label288: while(false);
+  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AIdMethid].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, "parser_prod::APlusMethid::init_aplusmethid (src/parser//parser_prod.nit:3382,5--3388:22)"};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___APlusMethid___n_plus__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 3446, LOCATE_parser_prod___APlusMethid___n_plus__eq};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  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*/) /*TPlus::==*/)))))));
-  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) /*TPlus::parent=*/;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  ATTR_parser_nodes___APlusMethid____n_plus(variable[0]) /*APlusMethid::_n_plus*/ =  variable[1] /*n*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[0]) /*PNode::parent=*/;
   }
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_APlusMethid].i] = 1;
+  return_label289: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___APlusMethid___replace_child(val_t  self, val_t  param0, val_t  param1) {
-  struct trace_t trace = {NULL, "parser_prod::APlusMethid::replace_child (src/parser//parser_prod.nit:3392,5--3403:18)"};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  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*/) /*PNode::==*/)))))));
-  if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert failed: src/parser//parser_prod.nit:3394,9--32\n"); 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*/) /*TPlus::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*PNode::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_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 failed: src/parser//parser_prod.nit:3398,3--28\n"); 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_label272;
+  struct trace_t trace = {NULL, NULL, 3467, LOCATE_parser_prod___APlusMethid___replace_child};
+  val_t variable[5];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Local variable */
+  variable[2] =  param1;
+  /* Register variable[3]: Method return value and escape marker */
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___APlusMethid___replace_child, LOCATE_parser_prod, 3469); nit_exit(1);}
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___APlusMethid____n_plus(variable[0]) /*APlusMethid::_n_plus*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*PNode::parent=*/;
+      /* Register variable[4]: Result */
+      variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_TPlus, ID_TPlus)) /*cast TPlus*/;
+      if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___APlusMethid___replace_child, LOCATE_parser_prod, 3473); nit_exit(1);}
+      ATTR_parser_nodes___APlusMethid____n_plus(variable[0]) /*APlusMethid::_n_plus*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      ATTR_parser_nodes___APlusMethid____n_plus(variable[0]) /*APlusMethid::_n_plus*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label290;
   }
-  return_label272: while(false);
+  return_label290: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___APlusMethid___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::APlusMethid::visit_all (src/parser//parser_prod.nit:3407,5--3410:27)"};
-  val_t variable0;
-  val_t variable1;
+  struct trace_t trace = {NULL, NULL, 3482, LOCATE_parser_prod___APlusMethid___visit_all};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  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*/) /*TPlus::==*/)))))));
-  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*/;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___APlusMethid____n_plus(variable[0]) /*APlusMethid::_n_plus*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___APlusMethid____n_plus(variable[0]) /*APlusMethid::_n_plus*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
+  return_label291: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___APlusMethid___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::APlusMethid::visit_all_reverse (src/parser//parser_prod.nit:3414,5--3417:27)"};
-  val_t variable0;
-  val_t variable1;
+  struct trace_t trace = {NULL, NULL, 3489, LOCATE_parser_prod___APlusMethid___visit_all_reverse};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  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*/) /*TPlus::==*/)))))));
-  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*/;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___APlusMethid____n_plus(variable[0]) /*APlusMethid::_n_plus*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___APlusMethid____n_plus(variable[0]) /*APlusMethid::_n_plus*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
+  return_label292: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AMinusMethid___n_minus__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AMinusMethid::n_minus= (src/parser//parser_prod.nit:3422,5--3426:20)"};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___APlusMethid___empty_init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 3454, LOCATE_parser_prod___APlusMethid___empty_init};
+  val_t variable[2];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  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*/) /*TMinus::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*TMinus::parent=*/;
-  }
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_APlusMethid].i]) return;
+  /* Register variable[1]: Method return value and escape marker */
+  return_label293: while(false);
+  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_APlusMethid].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AMinusMethid___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, "parser_prod::AMinusMethid::empty_init (src/parser//parser_prod.nit:3430,5--27)"};
+void parser_prod___APlusMethid___init_aplusmethid(val_t  self, val_t  param0, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 3456, LOCATE_parser_prod___APlusMethid___init_aplusmethid};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AMinusMethid].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AMinusMethid].i] = 1;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_APlusMethid].i]) return;
+  /* Register variable[2]: Method return value and escape marker */
+  CALL_parser_prod___APlusMethid___empty_init(variable[0])(variable[0], init_table /*YYY*/) /*APlusMethid::empty_init*/;
+  ATTR_parser_nodes___APlusMethid____n_plus(variable[0]) /*APlusMethid::_n_plus*/ =  variable[1] /*n_plus*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_plus*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_plus*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n_plus*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_plus*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n_plus*/)( variable[1] /*n_plus*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n_plus*/)( variable[1] /*n_plus*/, variable[0]) /*PNode::parent=*/;
+  }
+  return_label294: while(false);
+  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_APlusMethid].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, "parser_prod::AMinusMethid::init_aminusmethid (src/parser//parser_prod.nit:3432,5--3438:23)"};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___AMinusMethid___n_minus__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 3497, LOCATE_parser_prod___AMinusMethid___n_minus__eq};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  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*/) /*TMinus::==*/)))))));
-  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) /*TMinus::parent=*/;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  ATTR_parser_nodes___AMinusMethid____n_minus(variable[0]) /*AMinusMethid::_n_minus*/ =  variable[1] /*n*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[0]) /*PNode::parent=*/;
   }
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AMinusMethid].i] = 1;
+  return_label295: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AMinusMethid___replace_child(val_t  self, val_t  param0, val_t  param1) {
-  struct trace_t trace = {NULL, "parser_prod::AMinusMethid::replace_child (src/parser//parser_prod.nit:3442,5--3453:18)"};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  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*/) /*PNode::==*/)))))));
-  if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert failed: src/parser//parser_prod.nit:3444,9--32\n"); 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*/) /*TMinus::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*PNode::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_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 failed: src/parser//parser_prod.nit:3448,3--29\n"); 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*/;
+  struct trace_t trace = {NULL, NULL, 3518, LOCATE_parser_prod___AMinusMethid___replace_child};
+  val_t variable[5];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Local variable */
+  variable[2] =  param1;
+  /* Register variable[3]: Method return value and escape marker */
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AMinusMethid___replace_child, LOCATE_parser_prod, 3520); nit_exit(1);}
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___AMinusMethid____n_minus(variable[0]) /*AMinusMethid::_n_minus*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*PNode::parent=*/;
+      /* Register variable[4]: Result */
+      variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_TMinus, ID_TMinus)) /*cast TMinus*/;
+      if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AMinusMethid___replace_child, LOCATE_parser_prod, 3524); nit_exit(1);}
+      ATTR_parser_nodes___AMinusMethid____n_minus(variable[0]) /*AMinusMethid::_n_minus*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      ATTR_parser_nodes___AMinusMethid____n_minus(variable[0]) /*AMinusMethid::_n_minus*/ =  NIT_NULL /*null*/;
     }
-    goto return_label278;
+    goto return_label296;
   }
-  return_label278: while(false);
+  return_label296: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AMinusMethid___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AMinusMethid::visit_all (src/parser//parser_prod.nit:3457,5--3460:28)"};
-  val_t variable0;
-  val_t variable1;
+  struct trace_t trace = {NULL, NULL, 3533, LOCATE_parser_prod___AMinusMethid___visit_all};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  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*/) /*TMinus::==*/)))))));
-  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*/;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AMinusMethid____n_minus(variable[0]) /*AMinusMethid::_n_minus*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AMinusMethid____n_minus(variable[0]) /*AMinusMethid::_n_minus*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
+  return_label297: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AMinusMethid___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AMinusMethid::visit_all_reverse (src/parser//parser_prod.nit:3464,5--3467:28)"};
-  val_t variable0;
-  val_t variable1;
+  struct trace_t trace = {NULL, NULL, 3540, LOCATE_parser_prod___AMinusMethid___visit_all_reverse};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  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*/) /*TMinus::==*/)))))));
-  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*/;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AMinusMethid____n_minus(variable[0]) /*AMinusMethid::_n_minus*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AMinusMethid____n_minus(variable[0]) /*AMinusMethid::_n_minus*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
+  return_label298: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AStarMethid___n_star__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AStarMethid::n_star= (src/parser//parser_prod.nit:3472,5--3476:20)"};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___AMinusMethid___empty_init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 3505, LOCATE_parser_prod___AMinusMethid___empty_init};
+  val_t variable[2];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  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*/) /*TStar::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*TStar::parent=*/;
-  }
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AMinusMethid].i]) return;
+  /* Register variable[1]: Method return value and escape marker */
+  return_label299: while(false);
+  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AMinusMethid].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AStarMethid___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, "parser_prod::AStarMethid::empty_init (src/parser//parser_prod.nit:3480,5--27)"};
+void parser_prod___AMinusMethid___init_aminusmethid(val_t  self, val_t  param0, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 3507, LOCATE_parser_prod___AMinusMethid___init_aminusmethid};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AStarMethid].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AStarMethid].i] = 1;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AMinusMethid].i]) return;
+  /* Register variable[2]: Method return value and escape marker */
+  CALL_parser_prod___AMinusMethid___empty_init(variable[0])(variable[0], init_table /*YYY*/) /*AMinusMethid::empty_init*/;
+  ATTR_parser_nodes___AMinusMethid____n_minus(variable[0]) /*AMinusMethid::_n_minus*/ =  variable[1] /*n_minus*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_minus*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_minus*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n_minus*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_minus*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n_minus*/)( variable[1] /*n_minus*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n_minus*/)( variable[1] /*n_minus*/, variable[0]) /*PNode::parent=*/;
+  }
+  return_label300: while(false);
+  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AMinusMethid].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, "parser_prod::AStarMethid::init_astarmethid (src/parser//parser_prod.nit:3482,5--3488:22)"};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___AStarMethid___n_star__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 3548, LOCATE_parser_prod___AStarMethid___n_star__eq};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  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*/) /*TStar::==*/)))))));
-  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) /*TStar::parent=*/;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  ATTR_parser_nodes___AStarMethid____n_star(variable[0]) /*AStarMethid::_n_star*/ =  variable[1] /*n*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[0]) /*PNode::parent=*/;
   }
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AStarMethid].i] = 1;
+  return_label301: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AStarMethid___replace_child(val_t  self, val_t  param0, val_t  param1) {
-  struct trace_t trace = {NULL, "parser_prod::AStarMethid::replace_child (src/parser//parser_prod.nit:3492,5--3503:18)"};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  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*/) /*PNode::==*/)))))));
-  if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert failed: src/parser//parser_prod.nit:3494,9--32\n"); 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*/) /*TStar::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*PNode::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_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 failed: src/parser//parser_prod.nit:3498,3--28\n"); 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*/;
+  struct trace_t trace = {NULL, NULL, 3569, LOCATE_parser_prod___AStarMethid___replace_child};
+  val_t variable[5];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Local variable */
+  variable[2] =  param1;
+  /* Register variable[3]: Method return value and escape marker */
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AStarMethid___replace_child, LOCATE_parser_prod, 3571); nit_exit(1);}
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___AStarMethid____n_star(variable[0]) /*AStarMethid::_n_star*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*PNode::parent=*/;
+      /* Register variable[4]: Result */
+      variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_TStar, ID_TStar)) /*cast TStar*/;
+      if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AStarMethid___replace_child, LOCATE_parser_prod, 3575); nit_exit(1);}
+      ATTR_parser_nodes___AStarMethid____n_star(variable[0]) /*AStarMethid::_n_star*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      ATTR_parser_nodes___AStarMethid____n_star(variable[0]) /*AStarMethid::_n_star*/ =  NIT_NULL /*null*/;
     }
-    goto return_label284;
+    goto return_label302;
   }
-  return_label284: while(false);
+  return_label302: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AStarMethid___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AStarMethid::visit_all (src/parser//parser_prod.nit:3507,5--3510:27)"};
-  val_t variable0;
-  val_t variable1;
+  struct trace_t trace = {NULL, NULL, 3584, LOCATE_parser_prod___AStarMethid___visit_all};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  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*/) /*TStar::==*/)))))));
-  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*/;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AStarMethid____n_star(variable[0]) /*AStarMethid::_n_star*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AStarMethid____n_star(variable[0]) /*AStarMethid::_n_star*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
+  return_label303: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AStarMethid___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AStarMethid::visit_all_reverse (src/parser//parser_prod.nit:3514,5--3517:27)"};
-  val_t variable0;
-  val_t variable1;
+  struct trace_t trace = {NULL, NULL, 3591, LOCATE_parser_prod___AStarMethid___visit_all_reverse};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  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*/) /*TStar::==*/)))))));
-  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*/;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AStarMethid____n_star(variable[0]) /*AStarMethid::_n_star*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AStarMethid____n_star(variable[0]) /*AStarMethid::_n_star*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
+  return_label304: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___ASlashMethid___n_slash__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::ASlashMethid::n_slash= (src/parser//parser_prod.nit:3522,5--3526:20)"};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___AStarMethid___empty_init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 3556, LOCATE_parser_prod___AStarMethid___empty_init};
+  val_t variable[2];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  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*/) /*TSlash::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*TSlash::parent=*/;
-  }
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AStarMethid].i]) return;
+  /* Register variable[1]: Method return value and escape marker */
+  return_label305: while(false);
+  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AStarMethid].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser_prod___ASlashMethid___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, "parser_prod::ASlashMethid::empty_init (src/parser//parser_prod.nit:3530,5--27)"};
+void parser_prod___AStarMethid___init_astarmethid(val_t  self, val_t  param0, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 3558, LOCATE_parser_prod___AStarMethid___init_astarmethid};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ASlashMethid].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ASlashMethid].i] = 1;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AStarMethid].i]) return;
+  /* Register variable[2]: Method return value and escape marker */
+  CALL_parser_prod___AStarMethid___empty_init(variable[0])(variable[0], init_table /*YYY*/) /*AStarMethid::empty_init*/;
+  ATTR_parser_nodes___AStarMethid____n_star(variable[0]) /*AStarMethid::_n_star*/ =  variable[1] /*n_star*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_star*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_star*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n_star*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_star*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n_star*/)( variable[1] /*n_star*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n_star*/)( variable[1] /*n_star*/, variable[0]) /*PNode::parent=*/;
+  }
+  return_label306: while(false);
+  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AStarMethid].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, "parser_prod::ASlashMethid::init_aslashmethid (src/parser//parser_prod.nit:3532,5--3538:23)"};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___ASlashMethid___n_slash__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 3599, LOCATE_parser_prod___ASlashMethid___n_slash__eq};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  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*/) /*TSlash::==*/)))))));
-  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) /*TSlash::parent=*/;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  ATTR_parser_nodes___ASlashMethid____n_slash(variable[0]) /*ASlashMethid::_n_slash*/ =  variable[1] /*n*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[0]) /*PNode::parent=*/;
   }
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ASlashMethid].i] = 1;
+  return_label307: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___ASlashMethid___replace_child(val_t  self, val_t  param0, val_t  param1) {
-  struct trace_t trace = {NULL, "parser_prod::ASlashMethid::replace_child (src/parser//parser_prod.nit:3542,5--3553:18)"};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  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*/) /*PNode::==*/)))))));
-  if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert failed: src/parser//parser_prod.nit:3544,9--32\n"); 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*/) /*TSlash::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*PNode::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_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 failed: src/parser//parser_prod.nit:3548,3--29\n"); 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*/;
+  struct trace_t trace = {NULL, NULL, 3620, LOCATE_parser_prod___ASlashMethid___replace_child};
+  val_t variable[5];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Local variable */
+  variable[2] =  param1;
+  /* Register variable[3]: Method return value and escape marker */
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ASlashMethid___replace_child, LOCATE_parser_prod, 3622); nit_exit(1);}
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___ASlashMethid____n_slash(variable[0]) /*ASlashMethid::_n_slash*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*PNode::parent=*/;
+      /* Register variable[4]: Result */
+      variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_TSlash, ID_TSlash)) /*cast TSlash*/;
+      if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ASlashMethid___replace_child, LOCATE_parser_prod, 3626); nit_exit(1);}
+      ATTR_parser_nodes___ASlashMethid____n_slash(variable[0]) /*ASlashMethid::_n_slash*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      ATTR_parser_nodes___ASlashMethid____n_slash(variable[0]) /*ASlashMethid::_n_slash*/ =  NIT_NULL /*null*/;
     }
-    goto return_label290;
+    goto return_label308;
   }
-  return_label290: while(false);
+  return_label308: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___ASlashMethid___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::ASlashMethid::visit_all (src/parser//parser_prod.nit:3557,5--3560:28)"};
-  val_t variable0;
-  val_t variable1;
+  struct trace_t trace = {NULL, NULL, 3635, LOCATE_parser_prod___ASlashMethid___visit_all};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  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*/) /*TSlash::==*/)))))));
-  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*/;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___ASlashMethid____n_slash(variable[0]) /*ASlashMethid::_n_slash*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___ASlashMethid____n_slash(variable[0]) /*ASlashMethid::_n_slash*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
+  return_label309: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___ASlashMethid___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::ASlashMethid::visit_all_reverse (src/parser//parser_prod.nit:3564,5--3567:28)"};
-  val_t variable0;
-  val_t variable1;
+  struct trace_t trace = {NULL, NULL, 3642, LOCATE_parser_prod___ASlashMethid___visit_all_reverse};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  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*/) /*TSlash::==*/)))))));
-  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*/;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___ASlashMethid____n_slash(variable[0]) /*ASlashMethid::_n_slash*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___ASlashMethid____n_slash(variable[0]) /*ASlashMethid::_n_slash*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
+  return_label310: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___APercentMethid___n_percent__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::APercentMethid::n_percent= (src/parser//parser_prod.nit:3572,5--3576:20)"};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___ASlashMethid___empty_init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 3607, LOCATE_parser_prod___ASlashMethid___empty_init};
+  val_t variable[2];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  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*/) /*TPercent::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*TPercent::parent=*/;
-  }
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ASlashMethid].i]) return;
+  /* Register variable[1]: Method return value and escape marker */
+  return_label311: while(false);
+  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ASlashMethid].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser_prod___APercentMethid___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, "parser_prod::APercentMethid::empty_init (src/parser//parser_prod.nit:3580,5--27)"};
+void parser_prod___ASlashMethid___init_aslashmethid(val_t  self, val_t  param0, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 3609, LOCATE_parser_prod___ASlashMethid___init_aslashmethid};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_APercentMethid].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_APercentMethid].i] = 1;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ASlashMethid].i]) return;
+  /* Register variable[2]: Method return value and escape marker */
+  CALL_parser_prod___ASlashMethid___empty_init(variable[0])(variable[0], init_table /*YYY*/) /*ASlashMethid::empty_init*/;
+  ATTR_parser_nodes___ASlashMethid____n_slash(variable[0]) /*ASlashMethid::_n_slash*/ =  variable[1] /*n_slash*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_slash*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_slash*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n_slash*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_slash*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n_slash*/)( variable[1] /*n_slash*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n_slash*/)( variable[1] /*n_slash*/, variable[0]) /*PNode::parent=*/;
+  }
+  return_label312: while(false);
+  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ASlashMethid].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, "parser_prod::APercentMethid::init_apercentmethid (src/parser//parser_prod.nit:3582,5--3588:25)"};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___APercentMethid___n_percent__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 3650, LOCATE_parser_prod___APercentMethid___n_percent__eq};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  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*/) /*TPercent::==*/)))))));
-  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) /*TPercent::parent=*/;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  ATTR_parser_nodes___APercentMethid____n_percent(variable[0]) /*APercentMethid::_n_percent*/ =  variable[1] /*n*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[0]) /*PNode::parent=*/;
   }
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_APercentMethid].i] = 1;
+  return_label313: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___APercentMethid___replace_child(val_t  self, val_t  param0, val_t  param1) {
-  struct trace_t trace = {NULL, "parser_prod::APercentMethid::replace_child (src/parser//parser_prod.nit:3592,5--3603:18)"};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  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*/) /*PNode::==*/)))))));
-  if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert failed: src/parser//parser_prod.nit:3594,9--32\n"); 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*/) /*TPercent::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*PNode::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_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 failed: src/parser//parser_prod.nit:3598,3--31\n"); 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*/;
+  struct trace_t trace = {NULL, NULL, 3671, LOCATE_parser_prod___APercentMethid___replace_child};
+  val_t variable[5];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Local variable */
+  variable[2] =  param1;
+  /* Register variable[3]: Method return value and escape marker */
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___APercentMethid___replace_child, LOCATE_parser_prod, 3673); nit_exit(1);}
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___APercentMethid____n_percent(variable[0]) /*APercentMethid::_n_percent*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*PNode::parent=*/;
+      /* Register variable[4]: Result */
+      variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_TPercent, ID_TPercent)) /*cast TPercent*/;
+      if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___APercentMethid___replace_child, LOCATE_parser_prod, 3677); nit_exit(1);}
+      ATTR_parser_nodes___APercentMethid____n_percent(variable[0]) /*APercentMethid::_n_percent*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      ATTR_parser_nodes___APercentMethid____n_percent(variable[0]) /*APercentMethid::_n_percent*/ =  NIT_NULL /*null*/;
     }
-    goto return_label296;
+    goto return_label314;
   }
-  return_label296: while(false);
+  return_label314: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___APercentMethid___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::APercentMethid::visit_all (src/parser//parser_prod.nit:3607,5--3610:30)"};
-  val_t variable0;
-  val_t variable1;
+  struct trace_t trace = {NULL, NULL, 3686, LOCATE_parser_prod___APercentMethid___visit_all};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  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*/) /*TPercent::==*/)))))));
-  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*/;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___APercentMethid____n_percent(variable[0]) /*APercentMethid::_n_percent*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___APercentMethid____n_percent(variable[0]) /*APercentMethid::_n_percent*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
+  return_label315: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___APercentMethid___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::APercentMethid::visit_all_reverse (src/parser//parser_prod.nit:3614,5--3617:30)"};
-  val_t variable0;
-  val_t variable1;
+  struct trace_t trace = {NULL, NULL, 3693, LOCATE_parser_prod___APercentMethid___visit_all_reverse};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  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*/) /*TPercent::==*/)))))));
-  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*/;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___APercentMethid____n_percent(variable[0]) /*APercentMethid::_n_percent*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___APercentMethid____n_percent(variable[0]) /*APercentMethid::_n_percent*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
+  return_label316: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AEqMethid___n_eq__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AEqMethid::n_eq= (src/parser//parser_prod.nit:3622,5--3626:20)"};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___APercentMethid___empty_init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 3658, LOCATE_parser_prod___APercentMethid___empty_init};
+  val_t variable[2];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  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*/) /*TEq::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*TEq::parent=*/;
-  }
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_APercentMethid].i]) return;
+  /* Register variable[1]: Method return value and escape marker */
+  return_label317: while(false);
+  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_APercentMethid].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AEqMethid___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, "parser_prod::AEqMethid::empty_init (src/parser//parser_prod.nit:3630,5--27)"};
+void parser_prod___APercentMethid___init_apercentmethid(val_t  self, val_t  param0, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 3660, LOCATE_parser_prod___APercentMethid___init_apercentmethid};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AEqMethid].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AEqMethid].i] = 1;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_APercentMethid].i]) return;
+  /* Register variable[2]: Method return value and escape marker */
+  CALL_parser_prod___APercentMethid___empty_init(variable[0])(variable[0], init_table /*YYY*/) /*APercentMethid::empty_init*/;
+  ATTR_parser_nodes___APercentMethid____n_percent(variable[0]) /*APercentMethid::_n_percent*/ =  variable[1] /*n_percent*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_percent*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_percent*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n_percent*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_percent*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n_percent*/)( variable[1] /*n_percent*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n_percent*/)( variable[1] /*n_percent*/, variable[0]) /*PNode::parent=*/;
+  }
+  return_label318: while(false);
+  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_APercentMethid].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, "parser_prod::AEqMethid::init_aeqmethid (src/parser//parser_prod.nit:3632,5--3638:20)"};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___AEqMethid___n_eq__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 3701, LOCATE_parser_prod___AEqMethid___n_eq__eq};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  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*/) /*TEq::==*/)))))));
-  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) /*TEq::parent=*/;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  ATTR_parser_nodes___AEqMethid____n_eq(variable[0]) /*AEqMethid::_n_eq*/ =  variable[1] /*n*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[0]) /*PNode::parent=*/;
   }
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AEqMethid].i] = 1;
+  return_label319: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AEqMethid___replace_child(val_t  self, val_t  param0, val_t  param1) {
-  struct trace_t trace = {NULL, "parser_prod::AEqMethid::replace_child (src/parser//parser_prod.nit:3642,5--3653:18)"};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  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*/) /*PNode::==*/)))))));
-  if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert failed: src/parser//parser_prod.nit:3644,9--32\n"); 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*/) /*TEq::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*PNode::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_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 failed: src/parser//parser_prod.nit:3648,3--26\n"); 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*/;
+  struct trace_t trace = {NULL, NULL, 3722, LOCATE_parser_prod___AEqMethid___replace_child};
+  val_t variable[5];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Local variable */
+  variable[2] =  param1;
+  /* Register variable[3]: Method return value and escape marker */
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AEqMethid___replace_child, LOCATE_parser_prod, 3724); nit_exit(1);}
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___AEqMethid____n_eq(variable[0]) /*AEqMethid::_n_eq*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*PNode::parent=*/;
+      /* Register variable[4]: Result */
+      variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_TEq, ID_TEq)) /*cast TEq*/;
+      if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AEqMethid___replace_child, LOCATE_parser_prod, 3728); nit_exit(1);}
+      ATTR_parser_nodes___AEqMethid____n_eq(variable[0]) /*AEqMethid::_n_eq*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      ATTR_parser_nodes___AEqMethid____n_eq(variable[0]) /*AEqMethid::_n_eq*/ =  NIT_NULL /*null*/;
     }
-    goto return_label302;
+    goto return_label320;
   }
-  return_label302: while(false);
+  return_label320: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AEqMethid___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AEqMethid::visit_all (src/parser//parser_prod.nit:3657,5--3660:25)"};
-  val_t variable0;
-  val_t variable1;
+  struct trace_t trace = {NULL, NULL, 3737, LOCATE_parser_prod___AEqMethid___visit_all};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  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*/) /*TEq::==*/)))))));
-  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*/;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AEqMethid____n_eq(variable[0]) /*AEqMethid::_n_eq*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AEqMethid____n_eq(variable[0]) /*AEqMethid::_n_eq*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
+  return_label321: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AEqMethid___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AEqMethid::visit_all_reverse (src/parser//parser_prod.nit:3664,5--3667:25)"};
-  val_t variable0;
-  val_t variable1;
+  struct trace_t trace = {NULL, NULL, 3744, LOCATE_parser_prod___AEqMethid___visit_all_reverse};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  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*/) /*TEq::==*/)))))));
-  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*/;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AEqMethid____n_eq(variable[0]) /*AEqMethid::_n_eq*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AEqMethid____n_eq(variable[0]) /*AEqMethid::_n_eq*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
+  return_label322: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___ANeMethid___n_ne__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::ANeMethid::n_ne= (src/parser//parser_prod.nit:3672,5--3676:20)"};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___AEqMethid___empty_init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 3709, LOCATE_parser_prod___AEqMethid___empty_init};
+  val_t variable[2];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  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*/) /*TNe::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*TNe::parent=*/;
-  }
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AEqMethid].i]) return;
+  /* Register variable[1]: Method return value and escape marker */
+  return_label323: while(false);
+  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AEqMethid].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser_prod___ANeMethid___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, "parser_prod::ANeMethid::empty_init (src/parser//parser_prod.nit:3680,5--27)"};
+void parser_prod___AEqMethid___init_aeqmethid(val_t  self, val_t  param0, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 3711, LOCATE_parser_prod___AEqMethid___init_aeqmethid};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ANeMethid].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ANeMethid].i] = 1;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AEqMethid].i]) return;
+  /* Register variable[2]: Method return value and escape marker */
+  CALL_parser_prod___AEqMethid___empty_init(variable[0])(variable[0], init_table /*YYY*/) /*AEqMethid::empty_init*/;
+  ATTR_parser_nodes___AEqMethid____n_eq(variable[0]) /*AEqMethid::_n_eq*/ =  variable[1] /*n_eq*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_eq*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_eq*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n_eq*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_eq*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n_eq*/)( variable[1] /*n_eq*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n_eq*/)( variable[1] /*n_eq*/, variable[0]) /*PNode::parent=*/;
+  }
+  return_label324: while(false);
+  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AEqMethid].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, "parser_prod::ANeMethid::init_anemethid (src/parser//parser_prod.nit:3682,5--3688:20)"};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___ANeMethid___n_ne__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 3752, LOCATE_parser_prod___ANeMethid___n_ne__eq};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  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*/) /*TNe::==*/)))))));
-  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) /*TNe::parent=*/;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  ATTR_parser_nodes___ANeMethid____n_ne(variable[0]) /*ANeMethid::_n_ne*/ =  variable[1] /*n*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[0]) /*PNode::parent=*/;
   }
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ANeMethid].i] = 1;
+  return_label325: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___ANeMethid___replace_child(val_t  self, val_t  param0, val_t  param1) {
-  struct trace_t trace = {NULL, "parser_prod::ANeMethid::replace_child (src/parser//parser_prod.nit:3692,5--3703:18)"};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  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*/) /*PNode::==*/)))))));
-  if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert failed: src/parser//parser_prod.nit:3694,9--32\n"); 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*/) /*TNe::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*PNode::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_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 failed: src/parser//parser_prod.nit:3698,3--26\n"); 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*/;
+  struct trace_t trace = {NULL, NULL, 3773, LOCATE_parser_prod___ANeMethid___replace_child};
+  val_t variable[5];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Local variable */
+  variable[2] =  param1;
+  /* Register variable[3]: Method return value and escape marker */
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ANeMethid___replace_child, LOCATE_parser_prod, 3775); nit_exit(1);}
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___ANeMethid____n_ne(variable[0]) /*ANeMethid::_n_ne*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*PNode::parent=*/;
+      /* Register variable[4]: Result */
+      variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_TNe, ID_TNe)) /*cast TNe*/;
+      if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ANeMethid___replace_child, LOCATE_parser_prod, 3779); nit_exit(1);}
+      ATTR_parser_nodes___ANeMethid____n_ne(variable[0]) /*ANeMethid::_n_ne*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      ATTR_parser_nodes___ANeMethid____n_ne(variable[0]) /*ANeMethid::_n_ne*/ =  NIT_NULL /*null*/;
     }
-    goto return_label308;
+    goto return_label326;
   }
-  return_label308: while(false);
+  return_label326: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___ANeMethid___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::ANeMethid::visit_all (src/parser//parser_prod.nit:3707,5--3710:25)"};
-  val_t variable0;
-  val_t variable1;
+  struct trace_t trace = {NULL, NULL, 3788, LOCATE_parser_prod___ANeMethid___visit_all};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  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*/) /*TNe::==*/)))))));
-  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*/;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___ANeMethid____n_ne(variable[0]) /*ANeMethid::_n_ne*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___ANeMethid____n_ne(variable[0]) /*ANeMethid::_n_ne*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
+  return_label327: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___ANeMethid___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::ANeMethid::visit_all_reverse (src/parser//parser_prod.nit:3714,5--3717:25)"};
-  val_t variable0;
-  val_t variable1;
+  struct trace_t trace = {NULL, NULL, 3795, LOCATE_parser_prod___ANeMethid___visit_all_reverse};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  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*/) /*TNe::==*/)))))));
-  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*/;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___ANeMethid____n_ne(variable[0]) /*ANeMethid::_n_ne*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___ANeMethid____n_ne(variable[0]) /*ANeMethid::_n_ne*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
+  return_label328: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___ALeMethid___n_le__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::ALeMethid::n_le= (src/parser//parser_prod.nit:3722,5--3726:20)"};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___ANeMethid___empty_init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 3760, LOCATE_parser_prod___ANeMethid___empty_init};
+  val_t variable[2];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  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*/) /*TLe::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*TLe::parent=*/;
-  }
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ANeMethid].i]) return;
+  /* Register variable[1]: Method return value and escape marker */
+  return_label329: while(false);
+  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ANeMethid].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser_prod___ALeMethid___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, "parser_prod::ALeMethid::empty_init (src/parser//parser_prod.nit:3730,5--27)"};
+void parser_prod___ANeMethid___init_anemethid(val_t  self, val_t  param0, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 3762, LOCATE_parser_prod___ANeMethid___init_anemethid};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ALeMethid].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ALeMethid].i] = 1;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ANeMethid].i]) return;
+  /* Register variable[2]: Method return value and escape marker */
+  CALL_parser_prod___ANeMethid___empty_init(variable[0])(variable[0], init_table /*YYY*/) /*ANeMethid::empty_init*/;
+  ATTR_parser_nodes___ANeMethid____n_ne(variable[0]) /*ANeMethid::_n_ne*/ =  variable[1] /*n_ne*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_ne*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_ne*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n_ne*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_ne*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n_ne*/)( variable[1] /*n_ne*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n_ne*/)( variable[1] /*n_ne*/, variable[0]) /*PNode::parent=*/;
+  }
+  return_label330: while(false);
+  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ANeMethid].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, "parser_prod::ALeMethid::init_alemethid (src/parser//parser_prod.nit:3732,5--3738:20)"};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___ALeMethid___n_le__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 3803, LOCATE_parser_prod___ALeMethid___n_le__eq};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  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*/) /*TLe::==*/)))))));
-  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) /*TLe::parent=*/;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  ATTR_parser_nodes___ALeMethid____n_le(variable[0]) /*ALeMethid::_n_le*/ =  variable[1] /*n*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[0]) /*PNode::parent=*/;
   }
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ALeMethid].i] = 1;
+  return_label331: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___ALeMethid___replace_child(val_t  self, val_t  param0, val_t  param1) {
-  struct trace_t trace = {NULL, "parser_prod::ALeMethid::replace_child (src/parser//parser_prod.nit:3742,5--3753:18)"};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  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*/) /*PNode::==*/)))))));
-  if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert failed: src/parser//parser_prod.nit:3744,9--32\n"); 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*/) /*TLe::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*PNode::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_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 failed: src/parser//parser_prod.nit:3748,3--26\n"); 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*/;
+  struct trace_t trace = {NULL, NULL, 3824, LOCATE_parser_prod___ALeMethid___replace_child};
+  val_t variable[5];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Local variable */
+  variable[2] =  param1;
+  /* Register variable[3]: Method return value and escape marker */
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ALeMethid___replace_child, LOCATE_parser_prod, 3826); nit_exit(1);}
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___ALeMethid____n_le(variable[0]) /*ALeMethid::_n_le*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*PNode::parent=*/;
+      /* Register variable[4]: Result */
+      variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_TLe, ID_TLe)) /*cast TLe*/;
+      if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ALeMethid___replace_child, LOCATE_parser_prod, 3830); nit_exit(1);}
+      ATTR_parser_nodes___ALeMethid____n_le(variable[0]) /*ALeMethid::_n_le*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      ATTR_parser_nodes___ALeMethid____n_le(variable[0]) /*ALeMethid::_n_le*/ =  NIT_NULL /*null*/;
     }
-    goto return_label314;
+    goto return_label332;
   }
-  return_label314: while(false);
+  return_label332: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___ALeMethid___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::ALeMethid::visit_all (src/parser//parser_prod.nit:3757,5--3760:25)"};
-  val_t variable0;
-  val_t variable1;
+  struct trace_t trace = {NULL, NULL, 3839, LOCATE_parser_prod___ALeMethid___visit_all};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  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*/) /*TLe::==*/)))))));
-  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*/;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___ALeMethid____n_le(variable[0]) /*ALeMethid::_n_le*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___ALeMethid____n_le(variable[0]) /*ALeMethid::_n_le*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
+  return_label333: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___ALeMethid___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::ALeMethid::visit_all_reverse (src/parser//parser_prod.nit:3764,5--3767:25)"};
-  val_t variable0;
-  val_t variable1;
+  struct trace_t trace = {NULL, NULL, 3846, LOCATE_parser_prod___ALeMethid___visit_all_reverse};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  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*/) /*TLe::==*/)))))));
-  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*/;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___ALeMethid____n_le(variable[0]) /*ALeMethid::_n_le*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___ALeMethid____n_le(variable[0]) /*ALeMethid::_n_le*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
+  return_label334: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AGeMethid___n_ge__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AGeMethid::n_ge= (src/parser//parser_prod.nit:3772,5--3776:20)"};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___ALeMethid___empty_init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 3811, LOCATE_parser_prod___ALeMethid___empty_init};
+  val_t variable[2];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  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*/) /*TGe::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*TGe::parent=*/;
-  }
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ALeMethid].i]) return;
+  /* Register variable[1]: Method return value and escape marker */
+  return_label335: while(false);
+  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ALeMethid].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AGeMethid___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, "parser_prod::AGeMethid::empty_init (src/parser//parser_prod.nit:3780,5--27)"};
+void parser_prod___ALeMethid___init_alemethid(val_t  self, val_t  param0, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 3813, LOCATE_parser_prod___ALeMethid___init_alemethid};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AGeMethid].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AGeMethid].i] = 1;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ALeMethid].i]) return;
+  /* Register variable[2]: Method return value and escape marker */
+  CALL_parser_prod___ALeMethid___empty_init(variable[0])(variable[0], init_table /*YYY*/) /*ALeMethid::empty_init*/;
+  ATTR_parser_nodes___ALeMethid____n_le(variable[0]) /*ALeMethid::_n_le*/ =  variable[1] /*n_le*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_le*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_le*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n_le*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_le*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n_le*/)( variable[1] /*n_le*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n_le*/)( variable[1] /*n_le*/, variable[0]) /*PNode::parent=*/;
+  }
+  return_label336: while(false);
+  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ALeMethid].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, "parser_prod::AGeMethid::init_agemethid (src/parser//parser_prod.nit:3782,5--3788:20)"};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___AGeMethid___n_ge__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 3854, LOCATE_parser_prod___AGeMethid___n_ge__eq};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  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*/) /*TGe::==*/)))))));
-  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) /*TGe::parent=*/;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  ATTR_parser_nodes___AGeMethid____n_ge(variable[0]) /*AGeMethid::_n_ge*/ =  variable[1] /*n*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[0]) /*PNode::parent=*/;
   }
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AGeMethid].i] = 1;
+  return_label337: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AGeMethid___replace_child(val_t  self, val_t  param0, val_t  param1) {
-  struct trace_t trace = {NULL, "parser_prod::AGeMethid::replace_child (src/parser//parser_prod.nit:3792,5--3803:18)"};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  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*/) /*PNode::==*/)))))));
-  if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert failed: src/parser//parser_prod.nit:3794,9--32\n"); 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*/) /*TGe::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*PNode::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_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 failed: src/parser//parser_prod.nit:3798,3--26\n"); 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*/;
+  struct trace_t trace = {NULL, NULL, 3875, LOCATE_parser_prod___AGeMethid___replace_child};
+  val_t variable[5];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Local variable */
+  variable[2] =  param1;
+  /* Register variable[3]: Method return value and escape marker */
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AGeMethid___replace_child, LOCATE_parser_prod, 3877); nit_exit(1);}
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___AGeMethid____n_ge(variable[0]) /*AGeMethid::_n_ge*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*PNode::parent=*/;
+      /* Register variable[4]: Result */
+      variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_TGe, ID_TGe)) /*cast TGe*/;
+      if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AGeMethid___replace_child, LOCATE_parser_prod, 3881); nit_exit(1);}
+      ATTR_parser_nodes___AGeMethid____n_ge(variable[0]) /*AGeMethid::_n_ge*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      ATTR_parser_nodes___AGeMethid____n_ge(variable[0]) /*AGeMethid::_n_ge*/ =  NIT_NULL /*null*/;
     }
-    goto return_label320;
+    goto return_label338;
   }
-  return_label320: while(false);
+  return_label338: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AGeMethid___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AGeMethid::visit_all (src/parser//parser_prod.nit:3807,5--3810:25)"};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  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*/) /*TGe::==*/)))))));
-  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*/;
+  struct trace_t trace = {NULL, NULL, 3890, LOCATE_parser_prod___AGeMethid___visit_all};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AGeMethid____n_ge(variable[0]) /*AGeMethid::_n_ge*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AGeMethid____n_ge(variable[0]) /*AGeMethid::_n_ge*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
+  return_label339: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AGeMethid___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AGeMethid::visit_all_reverse (src/parser//parser_prod.nit:3814,5--3817:25)"};
-  val_t variable0;
-  val_t variable1;
+  struct trace_t trace = {NULL, NULL, 3897, LOCATE_parser_prod___AGeMethid___visit_all_reverse};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  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*/) /*TGe::==*/)))))));
-  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*/;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AGeMethid____n_ge(variable[0]) /*AGeMethid::_n_ge*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AGeMethid____n_ge(variable[0]) /*AGeMethid::_n_ge*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
+  return_label340: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___ALtMethid___n_lt__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::ALtMethid::n_lt= (src/parser//parser_prod.nit:3822,5--3826:20)"};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___AGeMethid___empty_init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 3862, LOCATE_parser_prod___AGeMethid___empty_init};
+  val_t variable[2];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  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*/) /*TLt::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*TLt::parent=*/;
-  }
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AGeMethid].i]) return;
+  /* Register variable[1]: Method return value and escape marker */
+  return_label341: while(false);
+  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AGeMethid].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser_prod___ALtMethid___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, "parser_prod::ALtMethid::empty_init (src/parser//parser_prod.nit:3830,5--27)"};
+void parser_prod___AGeMethid___init_agemethid(val_t  self, val_t  param0, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 3864, LOCATE_parser_prod___AGeMethid___init_agemethid};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ALtMethid].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ALtMethid].i] = 1;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AGeMethid].i]) return;
+  /* Register variable[2]: Method return value and escape marker */
+  CALL_parser_prod___AGeMethid___empty_init(variable[0])(variable[0], init_table /*YYY*/) /*AGeMethid::empty_init*/;
+  ATTR_parser_nodes___AGeMethid____n_ge(variable[0]) /*AGeMethid::_n_ge*/ =  variable[1] /*n_ge*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_ge*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_ge*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n_ge*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_ge*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n_ge*/)( variable[1] /*n_ge*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n_ge*/)( variable[1] /*n_ge*/, variable[0]) /*PNode::parent=*/;
+  }
+  return_label342: while(false);
+  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AGeMethid].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, "parser_prod::ALtMethid::init_altmethid (src/parser//parser_prod.nit:3832,5--3838:20)"};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___ALtMethid___n_lt__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 3905, LOCATE_parser_prod___ALtMethid___n_lt__eq};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  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*/) /*TLt::==*/)))))));
-  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) /*TLt::parent=*/;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  ATTR_parser_nodes___ALtMethid____n_lt(variable[0]) /*ALtMethid::_n_lt*/ =  variable[1] /*n*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[0]) /*PNode::parent=*/;
   }
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ALtMethid].i] = 1;
+  return_label343: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___ALtMethid___replace_child(val_t  self, val_t  param0, val_t  param1) {
-  struct trace_t trace = {NULL, "parser_prod::ALtMethid::replace_child (src/parser//parser_prod.nit:3842,5--3853:18)"};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  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*/) /*PNode::==*/)))))));
-  if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert failed: src/parser//parser_prod.nit:3844,9--32\n"); 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*/) /*TLt::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*PNode::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_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 failed: src/parser//parser_prod.nit:3848,3--26\n"); 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*/;
+  struct trace_t trace = {NULL, NULL, 3926, LOCATE_parser_prod___ALtMethid___replace_child};
+  val_t variable[5];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Local variable */
+  variable[2] =  param1;
+  /* Register variable[3]: Method return value and escape marker */
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ALtMethid___replace_child, LOCATE_parser_prod, 3928); nit_exit(1);}
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___ALtMethid____n_lt(variable[0]) /*ALtMethid::_n_lt*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*PNode::parent=*/;
+      /* Register variable[4]: Result */
+      variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_TLt, ID_TLt)) /*cast TLt*/;
+      if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ALtMethid___replace_child, LOCATE_parser_prod, 3932); nit_exit(1);}
+      ATTR_parser_nodes___ALtMethid____n_lt(variable[0]) /*ALtMethid::_n_lt*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      ATTR_parser_nodes___ALtMethid____n_lt(variable[0]) /*ALtMethid::_n_lt*/ =  NIT_NULL /*null*/;
     }
-    goto return_label326;
+    goto return_label344;
   }
-  return_label326: while(false);
+  return_label344: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___ALtMethid___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::ALtMethid::visit_all (src/parser//parser_prod.nit:3857,5--3860:25)"};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  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*/) /*TLt::==*/)))))));
-  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*/;
+  struct trace_t trace = {NULL, NULL, 3941, LOCATE_parser_prod___ALtMethid___visit_all};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___ALtMethid____n_lt(variable[0]) /*ALtMethid::_n_lt*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___ALtMethid____n_lt(variable[0]) /*ALtMethid::_n_lt*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
+  return_label345: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___ALtMethid___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::ALtMethid::visit_all_reverse (src/parser//parser_prod.nit:3864,5--3867:25)"};
-  val_t variable0;
-  val_t variable1;
+  struct trace_t trace = {NULL, NULL, 3948, LOCATE_parser_prod___ALtMethid___visit_all_reverse};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  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*/) /*TLt::==*/)))))));
-  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*/;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___ALtMethid____n_lt(variable[0]) /*ALtMethid::_n_lt*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___ALtMethid____n_lt(variable[0]) /*ALtMethid::_n_lt*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
+  return_label346: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AGtMethid___n_gt__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AGtMethid::n_gt= (src/parser//parser_prod.nit:3872,5--3876:20)"};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___ALtMethid___empty_init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 3913, LOCATE_parser_prod___ALtMethid___empty_init};
+  val_t variable[2];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  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*/) /*TGt::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*TGt::parent=*/;
-  }
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ALtMethid].i]) return;
+  /* Register variable[1]: Method return value and escape marker */
+  return_label347: while(false);
+  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ALtMethid].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AGtMethid___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, "parser_prod::AGtMethid::empty_init (src/parser//parser_prod.nit:3880,5--27)"};
+void parser_prod___ALtMethid___init_altmethid(val_t  self, val_t  param0, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 3915, LOCATE_parser_prod___ALtMethid___init_altmethid};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AGtMethid].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AGtMethid].i] = 1;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ALtMethid].i]) return;
+  /* Register variable[2]: Method return value and escape marker */
+  CALL_parser_prod___ALtMethid___empty_init(variable[0])(variable[0], init_table /*YYY*/) /*ALtMethid::empty_init*/;
+  ATTR_parser_nodes___ALtMethid____n_lt(variable[0]) /*ALtMethid::_n_lt*/ =  variable[1] /*n_lt*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_lt*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_lt*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n_lt*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_lt*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n_lt*/)( variable[1] /*n_lt*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n_lt*/)( variable[1] /*n_lt*/, variable[0]) /*PNode::parent=*/;
+  }
+  return_label348: while(false);
+  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ALtMethid].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, "parser_prod::AGtMethid::init_agtmethid (src/parser//parser_prod.nit:3882,5--3888:20)"};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___AGtMethid___n_gt__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 3956, LOCATE_parser_prod___AGtMethid___n_gt__eq};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  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*/) /*TGt::==*/)))))));
-  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) /*TGt::parent=*/;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  ATTR_parser_nodes___AGtMethid____n_gt(variable[0]) /*AGtMethid::_n_gt*/ =  variable[1] /*n*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[0]) /*PNode::parent=*/;
   }
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AGtMethid].i] = 1;
+  return_label349: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AGtMethid___replace_child(val_t  self, val_t  param0, val_t  param1) {
-  struct trace_t trace = {NULL, "parser_prod::AGtMethid::replace_child (src/parser//parser_prod.nit:3892,5--3903:18)"};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  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*/) /*PNode::==*/)))))));
-  if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert failed: src/parser//parser_prod.nit:3894,9--32\n"); 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*/) /*TGt::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*PNode::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_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 failed: src/parser//parser_prod.nit:3898,3--26\n"); 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*/;
+  struct trace_t trace = {NULL, NULL, 3977, LOCATE_parser_prod___AGtMethid___replace_child};
+  val_t variable[5];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Local variable */
+  variable[2] =  param1;
+  /* Register variable[3]: Method return value and escape marker */
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AGtMethid___replace_child, LOCATE_parser_prod, 3979); nit_exit(1);}
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___AGtMethid____n_gt(variable[0]) /*AGtMethid::_n_gt*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*PNode::parent=*/;
+      /* Register variable[4]: Result */
+      variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_TGt, ID_TGt)) /*cast TGt*/;
+      if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AGtMethid___replace_child, LOCATE_parser_prod, 3983); nit_exit(1);}
+      ATTR_parser_nodes___AGtMethid____n_gt(variable[0]) /*AGtMethid::_n_gt*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      ATTR_parser_nodes___AGtMethid____n_gt(variable[0]) /*AGtMethid::_n_gt*/ =  NIT_NULL /*null*/;
     }
-    goto return_label332;
+    goto return_label350;
   }
-  return_label332: while(false);
+  return_label350: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AGtMethid___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AGtMethid::visit_all (src/parser//parser_prod.nit:3907,5--3910:25)"};
-  val_t variable0;
-  val_t variable1;
+  struct trace_t trace = {NULL, NULL, 3992, LOCATE_parser_prod___AGtMethid___visit_all};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  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*/) /*TGt::==*/)))))));
-  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*/;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AGtMethid____n_gt(variable[0]) /*AGtMethid::_n_gt*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AGtMethid____n_gt(variable[0]) /*AGtMethid::_n_gt*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
+  return_label351: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AGtMethid___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AGtMethid::visit_all_reverse (src/parser//parser_prod.nit:3914,5--3917:25)"};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  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*/) /*TGt::==*/)))))));
-  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*/;
+  struct trace_t trace = {NULL, NULL, 3999, LOCATE_parser_prod___AGtMethid___visit_all_reverse};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AGtMethid____n_gt(variable[0]) /*AGtMethid::_n_gt*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AGtMethid____n_gt(variable[0]) /*AGtMethid::_n_gt*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
+  return_label352: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___ABraMethid___n_obra__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::ABraMethid::n_obra= (src/parser//parser_prod.nit:3922,5--3926:20)"};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___AGtMethid___empty_init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 3964, LOCATE_parser_prod___AGtMethid___empty_init};
+  val_t variable[2];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  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*/) /*TObra::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*TObra::parent=*/;
-  }
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AGtMethid].i]) return;
+  /* Register variable[1]: Method return value and escape marker */
+  return_label353: while(false);
+  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AGtMethid].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser_prod___ABraMethid___n_cbra__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::ABraMethid::n_cbra= (src/parser//parser_prod.nit:3929,5--3933:20)"};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___AGtMethid___init_agtmethid(val_t  self, val_t  param0, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 3966, LOCATE_parser_prod___AGtMethid___init_agtmethid};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  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*/) /*TCbra::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*TCbra::parent=*/;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AGtMethid].i]) return;
+  /* Register variable[2]: Method return value and escape marker */
+  CALL_parser_prod___AGtMethid___empty_init(variable[0])(variable[0], init_table /*YYY*/) /*AGtMethid::empty_init*/;
+  ATTR_parser_nodes___AGtMethid____n_gt(variable[0]) /*AGtMethid::_n_gt*/ =  variable[1] /*n_gt*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_gt*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_gt*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n_gt*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_gt*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n_gt*/)( variable[1] /*n_gt*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n_gt*/)( variable[1] /*n_gt*/, variable[0]) /*PNode::parent=*/;
   }
+  return_label354: while(false);
+  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AGtMethid].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser_prod___ABraMethid___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, "parser_prod::ABraMethid::empty_init (src/parser//parser_prod.nit:3937,5--27)"};
+void parser_prod___ABraMethid___n_obra__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 4007, LOCATE_parser_prod___ABraMethid___n_obra__eq};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ABraMethid].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ABraMethid].i] = 1;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  ATTR_parser_nodes___ABraMethid____n_obra(variable[0]) /*ABraMethid::_n_obra*/ =  variable[1] /*n*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[0]) /*PNode::parent=*/;
+  }
+  return_label355: while(false);
   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, "parser_prod::ABraMethid::init_abramethid (src/parser//parser_prod.nit:3939,5--3950:22)"};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
+void parser_prod___ABraMethid___n_cbra__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 4014, LOCATE_parser_prod___ABraMethid___n_cbra__eq};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  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*/) /*TObra::==*/)))))));
-  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) /*TObra::parent=*/;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  ATTR_parser_nodes___ABraMethid____n_cbra(variable[0]) /*ABraMethid::_n_cbra*/ =  variable[1] /*n*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[0]) /*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*/) /*TCbra::==*/)))))));
-  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) /*TCbra::parent=*/;
-  }
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ABraMethid].i] = 1;
+  return_label356: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___ABraMethid___replace_child(val_t  self, val_t  param0, val_t  param1) {
-  struct trace_t trace = {NULL, "parser_prod::ABraMethid::replace_child (src/parser//parser_prod.nit:3954,5--3975:18)"};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  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*/) /*PNode::==*/)))))));
-  if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert failed: src/parser//parser_prod.nit:3956,9--32\n"); 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*/) /*TObra::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*PNode::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_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 failed: src/parser//parser_prod.nit:3960,3--28\n"); 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_label339;
-  }
-  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*/) /*TCbra::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*PNode::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_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 failed: src/parser//parser_prod.nit:3970,3--28\n"); 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_label339;
+  struct trace_t trace = {NULL, NULL, 4040, LOCATE_parser_prod___ABraMethid___replace_child};
+  val_t variable[5];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Local variable */
+  variable[2] =  param1;
+  /* Register variable[3]: Method return value and escape marker */
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ABraMethid___replace_child, LOCATE_parser_prod, 4042); nit_exit(1);}
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___ABraMethid____n_obra(variable[0]) /*ABraMethid::_n_obra*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*PNode::parent=*/;
+      /* Register variable[4]: Result */
+      variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_TObra, ID_TObra)) /*cast TObra*/;
+      if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ABraMethid___replace_child, LOCATE_parser_prod, 4046); nit_exit(1);}
+      ATTR_parser_nodes___ABraMethid____n_obra(variable[0]) /*ABraMethid::_n_obra*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      ATTR_parser_nodes___ABraMethid____n_obra(variable[0]) /*ABraMethid::_n_obra*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label357;
+  }
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___ABraMethid____n_cbra(variable[0]) /*ABraMethid::_n_cbra*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*PNode::parent=*/;
+      /* Register variable[4]: Result */
+      variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_TCbra, ID_TCbra)) /*cast TCbra*/;
+      if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ABraMethid___replace_child, LOCATE_parser_prod, 4056); nit_exit(1);}
+      ATTR_parser_nodes___ABraMethid____n_cbra(variable[0]) /*ABraMethid::_n_cbra*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      ATTR_parser_nodes___ABraMethid____n_cbra(variable[0]) /*ABraMethid::_n_cbra*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label357;
   }
-  return_label339: while(false);
+  return_label357: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___ABraMethid___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::ABraMethid::visit_all (src/parser//parser_prod.nit:3979,5--3985:27)"};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  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*/) /*TObra::==*/)))))));
-  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*/) /*TCbra::==*/)))))));
-  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*/;
-  }
+  struct trace_t trace = {NULL, NULL, 4065, LOCATE_parser_prod___ABraMethid___visit_all};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___ABraMethid____n_obra(variable[0]) /*ABraMethid::_n_obra*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___ABraMethid____n_obra(variable[0]) /*ABraMethid::_n_obra*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___ABraMethid____n_cbra(variable[0]) /*ABraMethid::_n_cbra*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___ABraMethid____n_cbra(variable[0]) /*ABraMethid::_n_cbra*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  return_label358: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___ABraMethid___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::ABraMethid::visit_all_reverse (src/parser//parser_prod.nit:3989,5--3995:27)"};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  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*/) /*TObra::==*/)))))));
-  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*/) /*TCbra::==*/)))))));
-  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*/;
-  }
+  struct trace_t trace = {NULL, NULL, 4075, LOCATE_parser_prod___ABraMethid___visit_all_reverse};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___ABraMethid____n_obra(variable[0]) /*ABraMethid::_n_obra*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___ABraMethid____n_obra(variable[0]) /*ABraMethid::_n_obra*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___ABraMethid____n_cbra(variable[0]) /*ABraMethid::_n_cbra*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___ABraMethid____n_cbra(variable[0]) /*ABraMethid::_n_cbra*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  return_label359: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AStarshipMethid___n_starship__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AStarshipMethid::n_starship= (src/parser//parser_prod.nit:4000,5--4004:20)"};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  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*/) /*TStarship::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*TStarship::parent=*/;
-  }
+void parser_prod___ABraMethid___empty_init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 4022, LOCATE_parser_prod___ABraMethid___empty_init};
+  val_t variable[2];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ABraMethid].i]) return;
+  /* Register variable[1]: Method return value and escape marker */
+  return_label360: while(false);
+  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ABraMethid].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AStarshipMethid___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, "parser_prod::AStarshipMethid::empty_init (src/parser//parser_prod.nit:4008,5--27)"};
-  trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AStarshipMethid].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AStarshipMethid].i] = 1;
+void parser_prod___ABraMethid___init_abramethid(val_t  self, val_t  param0, val_t  param1, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 4024, LOCATE_parser_prod___ABraMethid___init_abramethid};
+  val_t variable[5];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Local variable */
+  variable[2] =  param1;
+  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ABraMethid].i]) return;
+  /* Register variable[3]: Method return value and escape marker */
+  CALL_parser_prod___ABraMethid___empty_init(variable[0])(variable[0], init_table /*YYY*/) /*ABraMethid::empty_init*/;
+  ATTR_parser_nodes___ABraMethid____n_obra(variable[0]) /*ABraMethid::_n_obra*/ =  variable[1] /*n_obra*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_obra*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_obra*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n_obra*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_obra*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n_obra*/)( variable[1] /*n_obra*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n_obra*/)( variable[1] /*n_obra*/, variable[0]) /*PNode::parent=*/;
+  }
+  ATTR_parser_nodes___ABraMethid____n_cbra(variable[0]) /*ABraMethid::_n_cbra*/ =  variable[2] /*n_cbra*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*n_cbra*/ ==  NIT_NULL /*null*/) || (( variable[2] /*n_cbra*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*n_cbra*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*n_cbra*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*n_cbra*/)( variable[2] /*n_cbra*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[2] /*n_cbra*/)( variable[2] /*n_cbra*/, variable[0]) /*PNode::parent=*/;
+  }
+  return_label361: while(false);
+  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ABraMethid].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, "parser_prod::AStarshipMethid::init_astarshipmethid (src/parser//parser_prod.nit:4010,5--4016:26)"};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___AStarshipMethid___n_starship__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 4086, LOCATE_parser_prod___AStarshipMethid___n_starship__eq};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  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*/) /*TStarship::==*/)))))));
-  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) /*TStarship::parent=*/;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  ATTR_parser_nodes___AStarshipMethid____n_starship(variable[0]) /*AStarshipMethid::_n_starship*/ =  variable[1] /*n*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[0]) /*PNode::parent=*/;
   }
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AStarshipMethid].i] = 1;
+  return_label362: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AStarshipMethid___replace_child(val_t  self, val_t  param0, val_t  param1) {
-  struct trace_t trace = {NULL, "parser_prod::AStarshipMethid::replace_child (src/parser//parser_prod.nit:4020,5--4031:18)"};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  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*/) /*PNode::==*/)))))));
-  if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert failed: src/parser//parser_prod.nit:4022,9--32\n"); 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*/) /*TStarship::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*PNode::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_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 failed: src/parser//parser_prod.nit:4026,3--32\n"); 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_label345;
+  struct trace_t trace = {NULL, NULL, 4107, LOCATE_parser_prod___AStarshipMethid___replace_child};
+  val_t variable[5];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Local variable */
+  variable[2] =  param1;
+  /* Register variable[3]: Method return value and escape marker */
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AStarshipMethid___replace_child, LOCATE_parser_prod, 4109); nit_exit(1);}
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___AStarshipMethid____n_starship(variable[0]) /*AStarshipMethid::_n_starship*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*PNode::parent=*/;
+      /* Register variable[4]: Result */
+      variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_TStarship, ID_TStarship)) /*cast TStarship*/;
+      if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AStarshipMethid___replace_child, LOCATE_parser_prod, 4113); nit_exit(1);}
+      ATTR_parser_nodes___AStarshipMethid____n_starship(variable[0]) /*AStarshipMethid::_n_starship*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      ATTR_parser_nodes___AStarshipMethid____n_starship(variable[0]) /*AStarshipMethid::_n_starship*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label363;
   }
-  return_label345: while(false);
+  return_label363: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AStarshipMethid___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AStarshipMethid::visit_all (src/parser//parser_prod.nit:4035,5--4038:31)"};
-  val_t variable0;
-  val_t variable1;
+  struct trace_t trace = {NULL, NULL, 4122, LOCATE_parser_prod___AStarshipMethid___visit_all};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  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*/) /*TStarship::==*/)))))));
-  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*/;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AStarshipMethid____n_starship(variable[0]) /*AStarshipMethid::_n_starship*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AStarshipMethid____n_starship(variable[0]) /*AStarshipMethid::_n_starship*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
+  return_label364: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AStarshipMethid___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AStarshipMethid::visit_all_reverse (src/parser//parser_prod.nit:4042,5--4045:31)"};
-  val_t variable0;
-  val_t variable1;
+  struct trace_t trace = {NULL, NULL, 4129, LOCATE_parser_prod___AStarshipMethid___visit_all_reverse};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  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*/) /*TStarship::==*/)))))));
-  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*/;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AStarshipMethid____n_starship(variable[0]) /*AStarshipMethid::_n_starship*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AStarshipMethid____n_starship(variable[0]) /*AStarshipMethid::_n_starship*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
+  return_label365: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AAssignMethid___n_id__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AAssignMethid::n_id= (src/parser//parser_prod.nit:4050,5--4054:20)"};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___AStarshipMethid___empty_init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 4094, LOCATE_parser_prod___AStarshipMethid___empty_init};
+  val_t variable[2];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  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*/) /*TId::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*TId::parent=*/;
-  }
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AStarshipMethid].i]) return;
+  /* Register variable[1]: Method return value and escape marker */
+  return_label366: while(false);
+  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AStarshipMethid].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AAssignMethid___n_assign__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AAssignMethid::n_assign= (src/parser//parser_prod.nit:4057,5--4061:20)"};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  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*/) /*TAssign::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*TAssign::parent=*/;
+void parser_prod___AStarshipMethid___init_astarshipmethid(val_t  self, val_t  param0, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 4096, LOCATE_parser_prod___AStarshipMethid___init_astarshipmethid};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AStarshipMethid].i]) return;
+  /* Register variable[2]: Method return value and escape marker */
+  CALL_parser_prod___AStarshipMethid___empty_init(variable[0])(variable[0], init_table /*YYY*/) /*AStarshipMethid::empty_init*/;
+  ATTR_parser_nodes___AStarshipMethid____n_starship(variable[0]) /*AStarshipMethid::_n_starship*/ =  variable[1] /*n_starship*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_starship*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_starship*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n_starship*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_starship*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n_starship*/)( variable[1] /*n_starship*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n_starship*/)( variable[1] /*n_starship*/, variable[0]) /*PNode::parent=*/;
   }
+  return_label367: while(false);
+  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AStarshipMethid].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AAssignMethid___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, "parser_prod::AAssignMethid::empty_init (src/parser//parser_prod.nit:4065,5--27)"};
+void parser_prod___AAssignMethid___n_id__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 4137, LOCATE_parser_prod___AAssignMethid___n_id__eq};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AAssignMethid].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AAssignMethid].i] = 1;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  ATTR_parser_nodes___AAssignMethid____n_id(variable[0]) /*AAssignMethid::_n_id*/ =  variable[1] /*n*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[0]) /*PNode::parent=*/;
+  }
+  return_label368: while(false);
   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, "parser_prod::AAssignMethid::init_aassignmethid (src/parser//parser_prod.nit:4067,5--4078:24)"};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
+void parser_prod___AAssignMethid___n_assign__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 4144, LOCATE_parser_prod___AAssignMethid___n_assign__eq};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  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*/) /*TId::==*/)))))));
-  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) /*TId::parent=*/;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  ATTR_parser_nodes___AAssignMethid____n_assign(variable[0]) /*AAssignMethid::_n_assign*/ =  variable[1] /*n*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[0]) /*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*/) /*TAssign::==*/)))))));
-  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) /*TAssign::parent=*/;
-  }
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AAssignMethid].i] = 1;
+  return_label369: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AAssignMethid___replace_child(val_t  self, val_t  param0, val_t  param1) {
-  struct trace_t trace = {NULL, "parser_prod::AAssignMethid::replace_child (src/parser//parser_prod.nit:4082,5--4103:18)"};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  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*/) /*PNode::==*/)))))));
-  if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert failed: src/parser//parser_prod.nit:4084,9--32\n"); 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*/) /*TId::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*PNode::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_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 failed: src/parser//parser_prod.nit:4088,3--26\n"); 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_label352;
-  }
-  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*/) /*TAssign::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*PNode::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_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 failed: src/parser//parser_prod.nit:4098,3--30\n"); 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_label352;
+  struct trace_t trace = {NULL, NULL, 4170, LOCATE_parser_prod___AAssignMethid___replace_child};
+  val_t variable[5];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Local variable */
+  variable[2] =  param1;
+  /* Register variable[3]: Method return value and escape marker */
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AAssignMethid___replace_child, LOCATE_parser_prod, 4172); nit_exit(1);}
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___AAssignMethid____n_id(variable[0]) /*AAssignMethid::_n_id*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*PNode::parent=*/;
+      /* Register variable[4]: Result */
+      variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_TId, ID_TId)) /*cast TId*/;
+      if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AAssignMethid___replace_child, LOCATE_parser_prod, 4176); nit_exit(1);}
+      ATTR_parser_nodes___AAssignMethid____n_id(variable[0]) /*AAssignMethid::_n_id*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      ATTR_parser_nodes___AAssignMethid____n_id(variable[0]) /*AAssignMethid::_n_id*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label370;
+  }
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___AAssignMethid____n_assign(variable[0]) /*AAssignMethid::_n_assign*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*PNode::parent=*/;
+      /* Register variable[4]: Result */
+      variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_TAssign, ID_TAssign)) /*cast TAssign*/;
+      if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AAssignMethid___replace_child, LOCATE_parser_prod, 4186); nit_exit(1);}
+      ATTR_parser_nodes___AAssignMethid____n_assign(variable[0]) /*AAssignMethid::_n_assign*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      ATTR_parser_nodes___AAssignMethid____n_assign(variable[0]) /*AAssignMethid::_n_assign*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label370;
   }
-  return_label352: while(false);
+  return_label370: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AAssignMethid___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AAssignMethid::visit_all (src/parser//parser_prod.nit:4107,5--4113:29)"};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  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*/) /*TId::==*/)))))));
-  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*/) /*TAssign::==*/)))))));
-  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*/;
-  }
+  struct trace_t trace = {NULL, NULL, 4195, LOCATE_parser_prod___AAssignMethid___visit_all};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AAssignMethid____n_id(variable[0]) /*AAssignMethid::_n_id*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AAssignMethid____n_id(variable[0]) /*AAssignMethid::_n_id*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AAssignMethid____n_assign(variable[0]) /*AAssignMethid::_n_assign*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AAssignMethid____n_assign(variable[0]) /*AAssignMethid::_n_assign*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  return_label371: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AAssignMethid___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AAssignMethid::visit_all_reverse (src/parser//parser_prod.nit:4117,5--4123:29)"};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  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*/) /*TId::==*/)))))));
-  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*/) /*TAssign::==*/)))))));
-  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*/;
-  }
+  struct trace_t trace = {NULL, NULL, 4205, LOCATE_parser_prod___AAssignMethid___visit_all_reverse};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AAssignMethid____n_id(variable[0]) /*AAssignMethid::_n_id*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AAssignMethid____n_id(variable[0]) /*AAssignMethid::_n_id*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AAssignMethid____n_assign(variable[0]) /*AAssignMethid::_n_assign*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AAssignMethid____n_assign(variable[0]) /*AAssignMethid::_n_assign*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  return_label372: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___ABraassignMethid___n_obra__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::ABraassignMethid::n_obra= (src/parser//parser_prod.nit:4128,5--4132:20)"};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___AAssignMethid___empty_init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 4152, LOCATE_parser_prod___AAssignMethid___empty_init};
+  val_t variable[2];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  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*/) /*TObra::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*TObra::parent=*/;
-  }
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AAssignMethid].i]) return;
+  /* Register variable[1]: Method return value and escape marker */
+  return_label373: while(false);
+  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AAssignMethid].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser_prod___ABraassignMethid___n_cbra__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::ABraassignMethid::n_cbra= (src/parser//parser_prod.nit:4135,5--4139:20)"};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  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*/) /*TCbra::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*TCbra::parent=*/;
-  }
+void parser_prod___AAssignMethid___init_aassignmethid(val_t  self, val_t  param0, val_t  param1, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 4154, LOCATE_parser_prod___AAssignMethid___init_aassignmethid};
+  val_t variable[5];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Local variable */
+  variable[2] =  param1;
+  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AAssignMethid].i]) return;
+  /* Register variable[3]: Method return value and escape marker */
+  CALL_parser_prod___AAssignMethid___empty_init(variable[0])(variable[0], init_table /*YYY*/) /*AAssignMethid::empty_init*/;
+  ATTR_parser_nodes___AAssignMethid____n_id(variable[0]) /*AAssignMethid::_n_id*/ =  variable[1] /*n_id*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_id*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_id*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n_id*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_id*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n_id*/)( variable[1] /*n_id*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n_id*/)( variable[1] /*n_id*/, variable[0]) /*PNode::parent=*/;
+  }
+  ATTR_parser_nodes___AAssignMethid____n_assign(variable[0]) /*AAssignMethid::_n_assign*/ =  variable[2] /*n_assign*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*n_assign*/ ==  NIT_NULL /*null*/) || (( variable[2] /*n_assign*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*n_assign*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*n_assign*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*n_assign*/)( variable[2] /*n_assign*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[2] /*n_assign*/)( variable[2] /*n_assign*/, variable[0]) /*PNode::parent=*/;
+  }
+  return_label374: while(false);
+  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AAssignMethid].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser_prod___ABraassignMethid___n_assign__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::ABraassignMethid::n_assign= (src/parser//parser_prod.nit:4142,5--4146:20)"};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___ABraassignMethid___n_obra__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 4216, LOCATE_parser_prod___ABraassignMethid___n_obra__eq};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  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*/) /*TAssign::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*TAssign::parent=*/;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  ATTR_parser_nodes___ABraassignMethid____n_obra(variable[0]) /*ABraassignMethid::_n_obra*/ =  variable[1] /*n*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[0]) /*PNode::parent=*/;
   }
+  return_label375: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___ABraassignMethid___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, "parser_prod::ABraassignMethid::empty_init (src/parser//parser_prod.nit:4150,5--27)"};
+void parser_prod___ABraassignMethid___n_cbra__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 4223, LOCATE_parser_prod___ABraassignMethid___n_cbra__eq};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ABraassignMethid].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ABraassignMethid].i] = 1;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  ATTR_parser_nodes___ABraassignMethid____n_cbra(variable[0]) /*ABraassignMethid::_n_cbra*/ =  variable[1] /*n*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[0]) /*PNode::parent=*/;
+  }
+  return_label376: while(false);
   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, "parser_prod::ABraassignMethid::init_abraassignmethid (src/parser//parser_prod.nit:4152,5--4168:24)"};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  val_t variable3;
+void parser_prod___ABraassignMethid___n_assign__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 4230, LOCATE_parser_prod___ABraassignMethid___n_assign__eq};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  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*/) /*TObra::==*/)))))));
-  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) /*TObra::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*/) /*TCbra::==*/)))))));
-  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) /*TCbra::parent=*/;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  ATTR_parser_nodes___ABraassignMethid____n_assign(variable[0]) /*ABraassignMethid::_n_assign*/ =  variable[1] /*n*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[0]) /*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*/) /*TAssign::==*/)))))));
-  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) /*TAssign::parent=*/;
-  }
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ABraassignMethid].i] = 1;
+  return_label377: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___ABraassignMethid___replace_child(val_t  self, val_t  param0, val_t  param1) {
-  struct trace_t trace = {NULL, "parser_prod::ABraassignMethid::replace_child (src/parser//parser_prod.nit:4172,5--4203:18)"};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  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*/) /*PNode::==*/)))))));
-  if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert failed: src/parser//parser_prod.nit:4174,9--32\n"); 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*/) /*TObra::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*PNode::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_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 failed: src/parser//parser_prod.nit:4178,3--28\n"); 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_label360;
-  }
-  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*/) /*TCbra::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*PNode::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_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 failed: src/parser//parser_prod.nit:4188,3--28\n"); 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_label360;
-  }
-  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*/) /*TAssign::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*PNode::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_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 failed: src/parser//parser_prod.nit:4198,3--30\n"); 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_label360;
+  struct trace_t trace = {NULL, NULL, 4261, LOCATE_parser_prod___ABraassignMethid___replace_child};
+  val_t variable[5];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Local variable */
+  variable[2] =  param1;
+  /* Register variable[3]: Method return value and escape marker */
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ABraassignMethid___replace_child, LOCATE_parser_prod, 4263); nit_exit(1);}
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___ABraassignMethid____n_obra(variable[0]) /*ABraassignMethid::_n_obra*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*PNode::parent=*/;
+      /* Register variable[4]: Result */
+      variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_TObra, ID_TObra)) /*cast TObra*/;
+      if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ABraassignMethid___replace_child, LOCATE_parser_prod, 4267); nit_exit(1);}
+      ATTR_parser_nodes___ABraassignMethid____n_obra(variable[0]) /*ABraassignMethid::_n_obra*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      ATTR_parser_nodes___ABraassignMethid____n_obra(variable[0]) /*ABraassignMethid::_n_obra*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label378;
   }
-  return_label360: while(false);
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___ABraassignMethid____n_cbra(variable[0]) /*ABraassignMethid::_n_cbra*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*PNode::parent=*/;
+      /* Register variable[4]: Result */
+      variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_TCbra, ID_TCbra)) /*cast TCbra*/;
+      if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ABraassignMethid___replace_child, LOCATE_parser_prod, 4277); nit_exit(1);}
+      ATTR_parser_nodes___ABraassignMethid____n_cbra(variable[0]) /*ABraassignMethid::_n_cbra*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      ATTR_parser_nodes___ABraassignMethid____n_cbra(variable[0]) /*ABraassignMethid::_n_cbra*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label378;
+  }
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___ABraassignMethid____n_assign(variable[0]) /*ABraassignMethid::_n_assign*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*PNode::parent=*/;
+      /* Register variable[4]: Result */
+      variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_TAssign, ID_TAssign)) /*cast TAssign*/;
+      if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ABraassignMethid___replace_child, LOCATE_parser_prod, 4287); nit_exit(1);}
+      ATTR_parser_nodes___ABraassignMethid____n_assign(variable[0]) /*ABraassignMethid::_n_assign*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      ATTR_parser_nodes___ABraassignMethid____n_assign(variable[0]) /*ABraassignMethid::_n_assign*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label378;
+  }
+  return_label378: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___ABraassignMethid___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::ABraassignMethid::visit_all (src/parser//parser_prod.nit:4207,5--4216:29)"};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  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*/) /*TObra::==*/)))))));
-  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*/) /*TCbra::==*/)))))));
-  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*/) /*TAssign::==*/)))))));
-  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*/;
-  }
+  struct trace_t trace = {NULL, NULL, 4296, LOCATE_parser_prod___ABraassignMethid___visit_all};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___ABraassignMethid____n_obra(variable[0]) /*ABraassignMethid::_n_obra*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___ABraassignMethid____n_obra(variable[0]) /*ABraassignMethid::_n_obra*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___ABraassignMethid____n_cbra(variable[0]) /*ABraassignMethid::_n_cbra*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___ABraassignMethid____n_cbra(variable[0]) /*ABraassignMethid::_n_cbra*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___ABraassignMethid____n_assign(variable[0]) /*ABraassignMethid::_n_assign*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___ABraassignMethid____n_assign(variable[0]) /*ABraassignMethid::_n_assign*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  return_label379: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___ABraassignMethid___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::ABraassignMethid::visit_all_reverse (src/parser//parser_prod.nit:4220,5--4229:29)"};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  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*/) /*TObra::==*/)))))));
-  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*/) /*TCbra::==*/)))))));
-  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*/) /*TAssign::==*/)))))));
-  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*/;
-  }
+  struct trace_t trace = {NULL, NULL, 4309, LOCATE_parser_prod___ABraassignMethid___visit_all_reverse};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___ABraassignMethid____n_obra(variable[0]) /*ABraassignMethid::_n_obra*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___ABraassignMethid____n_obra(variable[0]) /*ABraassignMethid::_n_obra*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___ABraassignMethid____n_cbra(variable[0]) /*ABraassignMethid::_n_cbra*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___ABraassignMethid____n_cbra(variable[0]) /*ABraassignMethid::_n_cbra*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___ABraassignMethid____n_assign(variable[0]) /*ABraassignMethid::_n_assign*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___ABraassignMethid____n_assign(variable[0]) /*ABraassignMethid::_n_assign*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  return_label380: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___ASignature___n_type__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::ASignature::n_type= (src/parser//parser_prod.nit:4234,5--4238:20)"};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___ABraassignMethid___empty_init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 4238, LOCATE_parser_prod___ABraassignMethid___empty_init};
+  val_t variable[2];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  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*/) /*PType::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PType::parent=*/;
-  }
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ABraassignMethid].i]) return;
+  /* Register variable[1]: Method return value and escape marker */
+  return_label381: while(false);
+  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ABraassignMethid].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser_prod___ASignature___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, "parser_prod::ASignature::empty_init (src/parser//parser_prod.nit:4242,5--27)"};
-  trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ASignature].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ASignature].i] = 1;
+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, 4240, LOCATE_parser_prod___ABraassignMethid___init_abraassignmethid};
+  val_t variable[6];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Local variable */
+  variable[2] =  param1;
+  /* Register variable[3]: Local variable */
+  variable[3] =  param2;
+  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ABraassignMethid].i]) return;
+  /* Register variable[4]: Method return value and escape marker */
+  CALL_parser_prod___ABraassignMethid___empty_init(variable[0])(variable[0], init_table /*YYY*/) /*ABraassignMethid::empty_init*/;
+  ATTR_parser_nodes___ABraassignMethid____n_obra(variable[0]) /*ABraassignMethid::_n_obra*/ =  variable[1] /*n_obra*/;
+  /* Register variable[5]: Result */
+  variable[5] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_obra*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_obra*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n_obra*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_obra*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n_obra*/)( variable[1] /*n_obra*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[5])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n_obra*/)( variable[1] /*n_obra*/, variable[0]) /*PNode::parent=*/;
+  }
+  ATTR_parser_nodes___ABraassignMethid____n_cbra(variable[0]) /*ABraassignMethid::_n_cbra*/ =  variable[2] /*n_cbra*/;
+  /* Register variable[5]: Result */
+  variable[5] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*n_cbra*/ ==  NIT_NULL /*null*/) || (( variable[2] /*n_cbra*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*n_cbra*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*n_cbra*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*n_cbra*/)( variable[2] /*n_cbra*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[5])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[2] /*n_cbra*/)( variable[2] /*n_cbra*/, variable[0]) /*PNode::parent=*/;
+  }
+  ATTR_parser_nodes___ABraassignMethid____n_assign(variable[0]) /*ABraassignMethid::_n_assign*/ =  variable[3] /*n_assign*/;
+  /* Register variable[5]: Result */
+  variable[5] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[3] /*n_assign*/ ==  NIT_NULL /*null*/) || (( variable[3] /*n_assign*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[3] /*n_assign*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[3] /*n_assign*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[3] /*n_assign*/)( variable[3] /*n_assign*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[5])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[3] /*n_assign*/)( variable[3] /*n_assign*/, variable[0]) /*PNode::parent=*/;
+  }
+  return_label382: while(false);
+  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ABraassignMethid].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, "parser_prod::ASignature::init_asignature (src/parser//parser_prod.nit:4244,5--4257:22)"};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-    val_t variable3;
-    val_t variable4;
+void parser_prod___ASignature___n_type__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 4323, LOCATE_parser_prod___ASignature___n_type__eq};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  variable0 =  param0;
-  variable1 =  param1;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ASignature].i]) return;
-  variable2 = NEW_list___List___init(); /*new List[PParam]*/
-  ATTR_parser_nodes___ASignature____n_params( self) /*ASignature::_n_params*/ = variable2;
-  variable2 = ((array___AbstractArray___iterator_t)CALL( variable0 /*n_params*/,COLOR_abstract_collection___Collection___iterator))( variable0 /*n_params*/) /*Array::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 failed: src/parser//parser_prod.nit:4251,3--21\n"); 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*/) /*List::add*/;
-    ((parser_prod___PNode___parent__eq_t)CALL( variable3 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable3 /*n*/,  self) /*PParam::parent=*/;
-    continue_366: while(0);
-    ((array___ArrayIterator___next_t)CALL(variable2,COLOR_abstract_collection___Iterator___next))(variable2) /*ArrayIterator::next*/;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  ATTR_parser_nodes___ASignature____n_type(variable[0]) /*ASignature::_n_type*/ =  variable[1] /*n*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[0]) /*PNode::parent=*/;
   }
-  break_366: 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*/) /*PType::==*/)))))));
-  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) /*PType::parent=*/;
-  }
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ASignature].i] = 1;
+  return_label383: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___ASignature___replace_child(val_t  self, val_t  param0, val_t  param1) {
-  struct trace_t trace = {NULL, "parser_prod::ASignature::replace_child (src/parser//parser_prod.nit:4261,5--4284:18)"};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  val_t variable3;
-    val_t variable4;
-  trace.prev = tracehead; tracehead = &trace;
-  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*/) /*PNode::==*/)))))));
-  if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert failed: src/parser//parser_prod.nit:4263,9--32\n"); 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[Int]*/
-  variable2 = variable3;
-  variable2 = ((range___Range___iterator_t)CALL(variable2,COLOR_abstract_collection___Collection___iterator))(variable2) /*Range::iterator*/;
+  struct trace_t trace = {NULL, NULL, 4358, LOCATE_parser_prod___ASignature___replace_child};
+  val_t variable[8];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Local variable */
+  variable[2] =  param1;
+  /* Register variable[3]: Method return value and escape marker */
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ASignature___replace_child, LOCATE_parser_prod, 4360); nit_exit(1);}
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___ASignature____n_params(variable[0]) /*ASignature::_n_params*/;
+  /* Register variable[4]: Result */
+  variable[4] = CALL_abstract_collection___Collection___length(variable[4])(variable[4]) /*List::length*/;
+  /* Register variable[4]: Result */
+  variable[4] = NEW_Range_range___Range___without_last( TAG_Int(0), variable[4]) /*new Range[Int]*/;
+  /* Register variable[4]: For iterator */
+  variable[4] = CALL_abstract_collection___Collection___iterator(variable[4])(variable[4]) /*Range::iterator*/;
   while (true) { /*for*/
-    variable3 = ((abstract_collection___Iterator___is_ok_t)CALL(variable2,COLOR_abstract_collection___Iterator___is_ok))(variable2) /*Iterator::is_ok*/;
-    if (!UNTAG_Bool(variable3)) break; /*for*/
-    variable3 = ((abstract_collection___Iterator___item_t)CALL(variable2,COLOR_abstract_collection___Iterator___item))(variable2) /*Iterator::item*/;
-    variable4 = ATTR_parser_nodes___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*/) /*PParam::==*/)))));
-    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*/) /*PNode::==*/)))))));
-      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 failed: src/parser//parser_prod.nit:4267,7--33\n"); 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) /*PParam::parent=*/;
+    /* Register variable[5]: For 'is_ok' result */
+    variable[5] = CALL_abstract_collection___Iterator___is_ok(variable[4])(variable[4]) /*Iterator::is_ok*/;
+    if (!UNTAG_Bool(variable[5])) break; /*for*/
+    variable[5] = CALL_abstract_collection___Iterator___item(variable[4])(variable[4]) /*Iterator::item*/ /* Ensure var: For item*/;
+    /* Register variable[6]: Local variable */
+    variable[6] = variable[5];
+    /* Register variable[7]: Result */
+    variable[7] = ATTR_parser_nodes___ASignature____n_params(variable[0]) /*ASignature::_n_params*/;
+    /* Register variable[7]: Result */
+    variable[7] = CALL_abstract_collection___MapRead_____bra(variable[7])(variable[7],  variable[6] /*i*/) /*List::[]*/;
+    /* Register variable[7]: Result */
+    variable[7] = TAG_Bool((variable[7] ==  variable[1] /*old_child*/) || ((variable[7] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[7])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[7], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[7])(variable[7],  variable[1] /*old_child*/) /*Object::==*/)))));
+    if (UNTAG_Bool(variable[7])) { /*if*/
+      /* Register variable[7]: Result */
+      variable[7] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+      if (UNTAG_Bool(variable[7])) { /*if*/
+        /* Register variable[7]: Result */
+        variable[7] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PParam, ID_PParam)) /*cast PParam*/;
+        if (!UNTAG_Bool(variable[7])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ASignature___replace_child, LOCATE_parser_prod, 4364); nit_exit(1);}
+        /* Register variable[7]: Result */
+        variable[7] = ATTR_parser_nodes___ASignature____n_params(variable[0]) /*ASignature::_n_params*/;
+        CALL_abstract_collection___Map_____braeq(variable[7])(variable[7],  variable[6] /*i*/,  variable[2] /*new_child*/) /*List::[]=*/;
+        CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*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*/;
+        /* Register variable[7]: Result */
+        variable[7] = ATTR_parser_nodes___ASignature____n_params(variable[0]) /*ASignature::_n_params*/;
+        CALL_abstract_collection___Map___remove_at(variable[7])(variable[7],  variable[6] /*i*/) /*List::remove_at*/;
       }
-      goto return_label367;
-    }
-    continue_368: while(0);
-    ((abstract_collection___Iterator___next_t)CALL(variable2,COLOR_abstract_collection___Iterator___next))(variable2) /*Iterator::next*/;
-  }
-  break_368: 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*/) /*PType::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*PNode::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_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 failed: src/parser//parser_prod.nit:4279,3--28\n"); nit_exit(1);}
-      ATTR_parser_nodes___ASignature____n_type( self) /*ASignature::_n_type*/ =  variable1 /*new_child*/;
+      goto return_label384;
+    }
+    continue_385: while(0);
+    CALL_abstract_collection___Iterator___next(variable[4])(variable[4]) /*Iterator::next*/;
+  }
+  break_385: while(0);
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___ASignature____n_type(variable[0]) /*ASignature::_n_type*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*PNode::parent=*/;
+      /* Register variable[4]: Result */
+      variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PType, ID_PType)) /*cast PType*/;
+      if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ASignature___replace_child, LOCATE_parser_prod, 4376); nit_exit(1);}
+      ATTR_parser_nodes___ASignature____n_type(variable[0]) /*ASignature::_n_type*/ =  variable[2] /*new_child*/;
     } else { /*if*/
-      ATTR_parser_nodes___ASignature____n_type( self) /*ASignature::_n_type*/ =  NIT_NULL /*null*/;
+      ATTR_parser_nodes___ASignature____n_type(variable[0]) /*ASignature::_n_type*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label384;
+  }
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___ASignature____n_closure_decls(variable[0]) /*ASignature::_n_closure_decls*/;
+  /* Register variable[4]: Result */
+  variable[4] = CALL_abstract_collection___Collection___length(variable[4])(variable[4]) /*List::length*/;
+  /* Register variable[4]: Result */
+  variable[4] = NEW_Range_range___Range___without_last( TAG_Int(0), variable[4]) /*new Range[Int]*/;
+  /* Register variable[4]: For iterator */
+  variable[4] = CALL_abstract_collection___Collection___iterator(variable[4])(variable[4]) /*Range::iterator*/;
+  while (true) { /*for*/
+    /* Register variable[5]: For 'is_ok' result */
+    variable[5] = CALL_abstract_collection___Iterator___is_ok(variable[4])(variable[4]) /*Iterator::is_ok*/;
+    if (!UNTAG_Bool(variable[5])) break; /*for*/
+    variable[5] = CALL_abstract_collection___Iterator___item(variable[4])(variable[4]) /*Iterator::item*/ /* Ensure var: For item*/;
+    /* Register variable[6]: Local variable */
+    variable[6] = variable[5];
+    /* Register variable[7]: Result */
+    variable[7] = ATTR_parser_nodes___ASignature____n_closure_decls(variable[0]) /*ASignature::_n_closure_decls*/;
+    /* Register variable[7]: Result */
+    variable[7] = CALL_abstract_collection___MapRead_____bra(variable[7])(variable[7],  variable[6] /*i*/) /*List::[]*/;
+    /* Register variable[7]: Result */
+    variable[7] = TAG_Bool((variable[7] ==  variable[1] /*old_child*/) || ((variable[7] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[7])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[7], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[7])(variable[7],  variable[1] /*old_child*/) /*Object::==*/)))));
+    if (UNTAG_Bool(variable[7])) { /*if*/
+      /* Register variable[7]: Result */
+      variable[7] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+      if (UNTAG_Bool(variable[7])) { /*if*/
+        /* Register variable[7]: Result */
+        variable[7] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PClosureDecl, ID_PClosureDecl)) /*cast PClosureDecl*/;
+        if (!UNTAG_Bool(variable[7])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ASignature___replace_child, LOCATE_parser_prod, 4386); nit_exit(1);}
+        /* Register variable[7]: Result */
+        variable[7] = ATTR_parser_nodes___ASignature____n_closure_decls(variable[0]) /*ASignature::_n_closure_decls*/;
+        CALL_abstract_collection___Map_____braeq(variable[7])(variable[7],  variable[6] /*i*/,  variable[2] /*new_child*/) /*List::[]=*/;
+        CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*PNode::parent=*/;
+      } else { /*if*/
+        /* Register variable[7]: Result */
+        variable[7] = ATTR_parser_nodes___ASignature____n_closure_decls(variable[0]) /*ASignature::_n_closure_decls*/;
+        CALL_abstract_collection___Map___remove_at(variable[7])(variable[7],  variable[6] /*i*/) /*List::remove_at*/;
+      }
+      goto return_label384;
     }
-    goto return_label367;
+    continue_386: while(0);
+    CALL_abstract_collection___Iterator___next(variable[4])(variable[4]) /*Iterator::next*/;
   }
-  return_label367: while(false);
+  break_386: while(0);
+  return_label384: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___ASignature___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::ASignature::visit_all (src/parser//parser_prod.nit:4288,5--4294:27)"};
-  val_t variable0;
-  val_t variable1;
-    val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  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*/;
+  struct trace_t trace = {NULL, NULL, 4397, LOCATE_parser_prod___ASignature___visit_all};
+  val_t variable[6];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___ASignature____n_params(variable[0]) /*ASignature::_n_params*/;
+  /* Register variable[3]: For iterator */
+  variable[3] = CALL_abstract_collection___Collection___iterator(variable[3])(variable[3]) /*List::iterator*/;
   while (true) { /*for*/
-    variable2 = ((list___ListIterator___is_ok_t)CALL(variable1,COLOR_abstract_collection___Iterator___is_ok))(variable1) /*ListIterator::is_ok*/;
-    if (!UNTAG_Bool(variable2)) break; /*for*/
-    variable2 = ((list___ListIterator___item_t)CALL(variable1,COLOR_abstract_collection___Iterator___item))(variable1) /*ListIterator::item*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/,  variable2 /*n*/) /*Visitor::visit*/;
-    continue_370: while(0);
-    ((list___ListIterator___next_t)CALL(variable1,COLOR_abstract_collection___Iterator___next))(variable1) /*ListIterator::next*/;
+    /* Register variable[4]: For 'is_ok' result */
+    variable[4] = CALL_abstract_collection___Iterator___is_ok(variable[3])(variable[3]) /*ListIterator::is_ok*/;
+    if (!UNTAG_Bool(variable[4])) break; /*for*/
+    variable[4] = CALL_abstract_collection___Iterator___item(variable[3])(variable[3]) /*ListIterator::item*/ /* Ensure var: For item*/;
+    /* Register variable[5]: Local variable */
+    variable[5] = variable[4];
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/,  variable[5] /*n*/) /*Visitor::visit*/;
+    continue_388: while(0);
+    CALL_abstract_collection___Iterator___next(variable[3])(variable[3]) /*ListIterator::next*/;
   }
-  break_370: 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*/) /*PType::==*/)))))));
-  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*/;
+  break_388: while(0);
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___ASignature____n_type(variable[0]) /*ASignature::_n_type*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___ASignature____n_type(variable[0]) /*ASignature::_n_type*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___ASignature____n_closure_decls(variable[0]) /*ASignature::_n_closure_decls*/;
+  /* Register variable[3]: For iterator */
+  variable[3] = CALL_abstract_collection___Collection___iterator(variable[3])(variable[3]) /*List::iterator*/;
+  while (true) { /*for*/
+    /* Register variable[4]: For 'is_ok' result */
+    variable[4] = CALL_abstract_collection___Iterator___is_ok(variable[3])(variable[3]) /*ListIterator::is_ok*/;
+    if (!UNTAG_Bool(variable[4])) break; /*for*/
+    variable[4] = CALL_abstract_collection___Iterator___item(variable[3])(variable[3]) /*ListIterator::item*/ /* Ensure var: For item*/;
+    /* Register variable[5]: Local variable */
+    variable[5] = variable[4];
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/,  variable[5] /*n*/) /*Visitor::visit*/;
+    continue_389: while(0);
+    CALL_abstract_collection___Iterator___next(variable[3])(variable[3]) /*ListIterator::next*/;
   }
+  break_389: while(0);
+  return_label387: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___ASignature___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::ASignature::visit_all_reverse (src/parser//parser_prod.nit:4298,5--4308:27)"};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  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;
+  struct trace_t trace = {NULL, NULL, 4410, LOCATE_parser_prod___ASignature___visit_all_reverse};
+  val_t variable[5];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  /* Register variable[3]: Local variable */
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___ASignature____n_params(variable[0]) /*ASignature::_n_params*/;
+  /* Register variable[4]: Result */
+  variable[4] = CALL_abstract_collection___Collection___length(variable[4])(variable[4]) /*List::length*/;
+  variable[3] = variable[4];
   while (true) { /*while*/
-    variable2 = TAG_Bool(UNTAG_Int( variable1 /*i*/)>=UNTAG_Int( TAG_Int(0)));
-    if (!UNTAG_Bool(variable2)) break; /* while*/
-    variable2 = ATTR_parser_nodes___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_372: while(0);
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(UNTAG_Int( variable[3] /*i*/)>=UNTAG_Int( TAG_Int(0)));
+    if (!UNTAG_Bool(variable[4])) break; /* while*/
+    /* Register variable[4]: Result */
+    variable[4] = ATTR_parser_nodes___ASignature____n_params(variable[0]) /*ASignature::_n_params*/;
+    /* Register variable[4]: Result */
+    variable[4] = CALL_abstract_collection___MapRead_____bra(variable[4])(variable[4],  variable[3] /*i*/) /*List::[]*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[4]) /*Visitor::visit*/;
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Int(UNTAG_Int( variable[3] /*i*/)-UNTAG_Int( TAG_Int(1)));
+    variable[3] = variable[4] /*i=*/;
+    continue_391: while(0);
+  }
+  break_391: while(0);
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___ASignature____n_type(variable[0]) /*ASignature::_n_type*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___ASignature____n_type(variable[0]) /*ASignature::_n_type*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Local variable */
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___ASignature____n_closure_decls(variable[0]) /*ASignature::_n_closure_decls*/;
+  /* Register variable[4]: Result */
+  variable[4] = CALL_abstract_collection___Collection___length(variable[4])(variable[4]) /*List::length*/;
+  variable[3] = variable[4];
+  while (true) { /*while*/
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(UNTAG_Int( variable[3] /*i*/)>=UNTAG_Int( TAG_Int(0)));
+    if (!UNTAG_Bool(variable[4])) break; /* while*/
+    /* Register variable[4]: Result */
+    variable[4] = ATTR_parser_nodes___ASignature____n_closure_decls(variable[0]) /*ASignature::_n_closure_decls*/;
+    /* Register variable[4]: Result */
+    variable[4] = CALL_abstract_collection___MapRead_____bra(variable[4])(variable[4],  variable[3] /*i*/) /*List::[]*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[4]) /*Visitor::visit*/;
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Int(UNTAG_Int( variable[3] /*i*/)-UNTAG_Int( TAG_Int(1)));
+    variable[3] = variable[4] /*i=*/;
+    continue_392: while(0);
   }
-  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*/) /*PType::==*/)))))));
-  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*/;
+  break_392: while(0);
+  return_label390: while(false);
+  tracehead = trace.prev;
+  return;
+}
+void parser_prod___ASignature___empty_init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 4331, LOCATE_parser_prod___ASignature___empty_init};
+  val_t variable[2];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ASignature].i]) return;
+  /* Register variable[1]: Method return value and escape marker */
+  return_label393: while(false);
+  init_table[VAL2OBJ(variable[0])->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, val_t  param2, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 4333, LOCATE_parser_prod___ASignature___init_asignature};
+  val_t variable[9];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Local variable */
+  variable[2] =  param1;
+  /* Register variable[3]: Local variable */
+  variable[3] =  param2;
+  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ASignature].i]) return;
+  /* Register variable[4]: Method return value and escape marker */
+  CALL_parser_prod___ASignature___empty_init(variable[0])(variable[0], init_table /*YYY*/) /*ASignature::empty_init*/;
+  /* Register variable[5]: Result */
+  variable[5] = NEW_List_list___List___init() /*new List[PParam]*/;
+  ATTR_parser_nodes___ASignature____n_params(variable[0]) /*ASignature::_n_params*/ = variable[5];
+  /* Register variable[5]: For iterator */
+  variable[5] = CALL_abstract_collection___Collection___iterator( variable[1] /*n_params*/)( variable[1] /*n_params*/) /*Collection::iterator*/;
+  while (true) { /*for*/
+    /* Register variable[6]: For 'is_ok' result */
+    variable[6] = CALL_abstract_collection___Iterator___is_ok(variable[5])(variable[5]) /*Iterator::is_ok*/;
+    if (!UNTAG_Bool(variable[6])) break; /*for*/
+    variable[6] = CALL_abstract_collection___Iterator___item(variable[5])(variable[5]) /*Iterator::item*/ /* Ensure var: For item*/;
+    /* Register variable[7]: Local variable */
+    variable[7] = variable[6];
+    /* Register variable[8]: Result */
+    variable[8] = TAG_Bool(( variable[7] /*n*/==NIT_NULL) || VAL_ISA( variable[7] /*n*/, COLOR_PParam, ID_PParam)) /*cast PParam*/;
+    if (!UNTAG_Bool(variable[8])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ASignature___init_asignature, LOCATE_parser_prod, 4342); nit_exit(1);}
+    /* Register variable[8]: Result */
+    variable[8] = ATTR_parser_nodes___ASignature____n_params(variable[0]) /*ASignature::_n_params*/;
+    CALL_abstract_collection___SimpleCollection___add(variable[8])(variable[8],  variable[7] /*n*/) /*IndexedCollection::add*/;
+    CALL_parser_prod___PNode___parent__eq( variable[7] /*n*/)( variable[7] /*n*/, variable[0]) /*PNode::parent=*/;
+    continue_395: while(0);
+    CALL_abstract_collection___Iterator___next(variable[5])(variable[5]) /*Iterator::next*/;
   }
+  break_395: while(0);
+  ATTR_parser_nodes___ASignature____n_type(variable[0]) /*ASignature::_n_type*/ =  variable[2] /*n_type*/;
+  /* Register variable[5]: Result */
+  variable[5] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*n_type*/ ==  NIT_NULL /*null*/) || (( variable[2] /*n_type*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*n_type*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*n_type*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*n_type*/)( variable[2] /*n_type*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[5])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[2] /*n_type*/)( variable[2] /*n_type*/, variable[0]) /*PNode::parent=*/;
+  }
+  /* Register variable[5]: Result */
+  variable[5] = NEW_List_list___List___init() /*new List[PClosureDecl]*/;
+  ATTR_parser_nodes___ASignature____n_closure_decls(variable[0]) /*ASignature::_n_closure_decls*/ = variable[5];
+  /* Register variable[5]: For iterator */
+  variable[5] = CALL_abstract_collection___Collection___iterator( variable[3] /*n_closure_decls*/)( variable[3] /*n_closure_decls*/) /*Collection::iterator*/;
+  while (true) { /*for*/
+    /* Register variable[6]: For 'is_ok' result */
+    variable[6] = CALL_abstract_collection___Iterator___is_ok(variable[5])(variable[5]) /*Iterator::is_ok*/;
+    if (!UNTAG_Bool(variable[6])) break; /*for*/
+    variable[6] = CALL_abstract_collection___Iterator___item(variable[5])(variable[5]) /*Iterator::item*/ /* Ensure var: For item*/;
+    /* Register variable[7]: Local variable */
+    variable[7] = variable[6];
+    /* Register variable[8]: Result */
+    variable[8] = TAG_Bool(( variable[7] /*n*/==NIT_NULL) || VAL_ISA( variable[7] /*n*/, COLOR_PClosureDecl, ID_PClosureDecl)) /*cast PClosureDecl*/;
+    if (!UNTAG_Bool(variable[8])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ASignature___init_asignature, LOCATE_parser_prod, 4352); nit_exit(1);}
+    /* Register variable[8]: Result */
+    variable[8] = ATTR_parser_nodes___ASignature____n_closure_decls(variable[0]) /*ASignature::_n_closure_decls*/;
+    CALL_abstract_collection___SimpleCollection___add(variable[8])(variable[8],  variable[7] /*n*/) /*IndexedCollection::add*/;
+    CALL_parser_prod___PNode___parent__eq( variable[7] /*n*/)( variable[7] /*n*/, variable[0]) /*PNode::parent=*/;
+    continue_396: while(0);
+    CALL_abstract_collection___Iterator___next(variable[5])(variable[5]) /*Iterator::next*/;
+  }
+  break_396: while(0);
+  return_label394: while(false);
+  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ASignature].i] = 1;
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AParam___n_id__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AParam::n_id= (src/parser//parser_prod.nit:4313,5--4317:20)"};
-  val_t variable0;
-  val_t variable1;
+  struct trace_t trace = {NULL, NULL, 4432, LOCATE_parser_prod___AParam___n_id__eq};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  variable0 =  param0;
-  ATTR_parser_nodes___PParam____n_id( self) /*AParam::_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*/) /*TId::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*TId::parent=*/;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  ATTR_parser_nodes___PParam____n_id(variable[0]) /*PParam::_n_id*/ =  variable[1] /*n*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[0]) /*PNode::parent=*/;
   }
+  return_label397: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AParam___n_type__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AParam::n_type= (src/parser//parser_prod.nit:4320,5--4324:20)"};
-  val_t variable0;
-  val_t variable1;
+  struct trace_t trace = {NULL, NULL, 4439, LOCATE_parser_prod___AParam___n_type__eq};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  variable0 =  param0;
-  ATTR_parser_nodes___PParam____n_type( self) /*AParam::_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*/) /*PType::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PType::parent=*/;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  ATTR_parser_nodes___PParam____n_type(variable[0]) /*PParam::_n_type*/ =  variable[1] /*n*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[0]) /*PNode::parent=*/;
   }
+  return_label398: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AParam___n_dotdotdot__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AParam::n_dotdotdot= (src/parser//parser_prod.nit:4327,5--4331:20)"};
-  val_t variable0;
-  val_t variable1;
+  struct trace_t trace = {NULL, NULL, 4446, LOCATE_parser_prod___AParam___n_dotdotdot__eq};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  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*/) /*TDotdotdot::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*TDotdotdot::parent=*/;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  ATTR_parser_nodes___AParam____n_dotdotdot(variable[0]) /*AParam::_n_dotdotdot*/ =  variable[1] /*n*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[0]) /*PNode::parent=*/;
   }
+  return_label399: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AParam___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, "parser_prod::AParam::empty_init (src/parser//parser_prod.nit:4335,5--27)"};
-  trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AParam].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AParam].i] = 1;
+void parser_prod___AParam___replace_child(val_t  self, val_t  param0, val_t  param1) {
+  struct trace_t trace = {NULL, NULL, 4477, LOCATE_parser_prod___AParam___replace_child};
+  val_t variable[5];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Local variable */
+  variable[2] =  param1;
+  /* Register variable[3]: Method return value and escape marker */
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AParam___replace_child, LOCATE_parser_prod, 4479); nit_exit(1);}
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___PParam____n_id(variable[0]) /*PParam::_n_id*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*PNode::parent=*/;
+      /* Register variable[4]: Result */
+      variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_TId, ID_TId)) /*cast TId*/;
+      if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AParam___replace_child, LOCATE_parser_prod, 4483); nit_exit(1);}
+      ATTR_parser_nodes___PParam____n_id(variable[0]) /*PParam::_n_id*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      ATTR_parser_nodes___PParam____n_id(variable[0]) /*PParam::_n_id*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label400;
+  }
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___PParam____n_type(variable[0]) /*PParam::_n_type*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*PNode::parent=*/;
+      /* Register variable[4]: Result */
+      variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PType, ID_PType)) /*cast PType*/;
+      if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AParam___replace_child, LOCATE_parser_prod, 4493); nit_exit(1);}
+      ATTR_parser_nodes___PParam____n_type(variable[0]) /*PParam::_n_type*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      ATTR_parser_nodes___PParam____n_type(variable[0]) /*PParam::_n_type*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label400;
+  }
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___AParam____n_dotdotdot(variable[0]) /*AParam::_n_dotdotdot*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*PNode::parent=*/;
+      /* Register variable[4]: Result */
+      variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_TDotdotdot, ID_TDotdotdot)) /*cast TDotdotdot*/;
+      if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AParam___replace_child, LOCATE_parser_prod, 4503); nit_exit(1);}
+      ATTR_parser_nodes___AParam____n_dotdotdot(variable[0]) /*AParam::_n_dotdotdot*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      ATTR_parser_nodes___AParam____n_dotdotdot(variable[0]) /*AParam::_n_dotdotdot*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label400;
+  }
+  return_label400: while(false);
   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, "parser_prod::AParam::init_aparam (src/parser//parser_prod.nit:4337,5--4353:27)"};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  val_t variable3;
-  trace.prev = tracehead; tracehead = &trace;
-  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) /*AParam::_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*/) /*TId::==*/)))))));
-  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) /*TId::parent=*/;
-  }
-  ATTR_parser_nodes___PParam____n_type( self) /*AParam::_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*/) /*PType::==*/)))))));
-  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) /*PType::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*/) /*TDotdotdot::==*/)))))));
-  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) /*TDotdotdot::parent=*/;
-  }
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AParam].i] = 1;
+void parser_prod___AParam___visit_all(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 4512, LOCATE_parser_prod___AParam___visit_all};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___PParam____n_id(variable[0]) /*PParam::_n_id*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___PParam____n_id(variable[0]) /*PParam::_n_id*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___PParam____n_type(variable[0]) /*PParam::_n_type*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___PParam____n_type(variable[0]) /*PParam::_n_type*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AParam____n_dotdotdot(variable[0]) /*AParam::_n_dotdotdot*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AParam____n_dotdotdot(variable[0]) /*AParam::_n_dotdotdot*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  return_label401: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AParam___replace_child(val_t  self, val_t  param0, val_t  param1) {
-  struct trace_t trace = {NULL, "parser_prod::AParam::replace_child (src/parser//parser_prod.nit:4357,5--4388:18)"};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  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*/) /*PNode::==*/)))))));
-  if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert failed: src/parser//parser_prod.nit:4359,9--32\n"); nit_exit(1);}
-  variable2 = ATTR_parser_nodes___PParam____n_id( self) /*AParam::_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*/) /*TId::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*PNode::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_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 failed: src/parser//parser_prod.nit:4363,3--26\n"); nit_exit(1);}
-      ATTR_parser_nodes___PParam____n_id( self) /*AParam::_n_id*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___PParam____n_id( self) /*AParam::_n_id*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label378;
-  }
-  variable2 = ATTR_parser_nodes___PParam____n_type( self) /*AParam::_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*/) /*PType::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*PNode::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_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 failed: src/parser//parser_prod.nit:4373,3--28\n"); nit_exit(1);}
-      ATTR_parser_nodes___PParam____n_type( self) /*AParam::_n_type*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___PParam____n_type( self) /*AParam::_n_type*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label378;
-  }
-  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*/) /*TDotdotdot::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*PNode::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_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 failed: src/parser//parser_prod.nit:4383,3--33\n"); 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_label378;
-  }
-  return_label378: while(false);
+void parser_prod___AParam___visit_all_reverse(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 4525, LOCATE_parser_prod___AParam___visit_all_reverse};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___PParam____n_id(variable[0]) /*PParam::_n_id*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___PParam____n_id(variable[0]) /*PParam::_n_id*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___PParam____n_type(variable[0]) /*PParam::_n_type*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___PParam____n_type(variable[0]) /*PParam::_n_type*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AParam____n_dotdotdot(variable[0]) /*AParam::_n_dotdotdot*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AParam____n_dotdotdot(variable[0]) /*AParam::_n_dotdotdot*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  return_label402: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AParam___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AParam::visit_all (src/parser//parser_prod.nit:4392,5--4401:32)"};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___AParam___empty_init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 4454, LOCATE_parser_prod___AParam___empty_init};
+  val_t variable[2];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___PParam____n_id( self) /*AParam::_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*/) /*TId::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___PParam____n_id( self) /*AParam::_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) /*AParam::_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*/) /*PType::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___PParam____n_type( self) /*AParam::_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*/) /*TDotdotdot::==*/)))))));
-  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*/;
-  }
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AParam].i]) return;
+  /* Register variable[1]: Method return value and escape marker */
+  return_label403: while(false);
+  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AParam].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AParam___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AParam::visit_all_reverse (src/parser//parser_prod.nit:4405,5--4414:32)"};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___PParam____n_id( self) /*AParam::_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*/) /*TId::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___PParam____n_id( self) /*AParam::_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) /*AParam::_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*/) /*PType::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___PParam____n_type( self) /*AParam::_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*/) /*TDotdotdot::==*/)))))));
-  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*/;
+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, 4456, LOCATE_parser_prod___AParam___init_aparam};
+  val_t variable[6];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Local variable */
+  variable[2] =  param1;
+  /* Register variable[3]: Local variable */
+  variable[3] =  param2;
+  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AParam].i]) return;
+  /* Register variable[4]: Method return value and escape marker */
+  CALL_parser_prod___AParam___empty_init(variable[0])(variable[0], init_table /*YYY*/) /*AParam::empty_init*/;
+  ATTR_parser_nodes___PParam____n_id(variable[0]) /*PParam::_n_id*/ =  variable[1] /*n_id*/;
+  /* Register variable[5]: Result */
+  variable[5] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_id*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_id*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n_id*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_id*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n_id*/)( variable[1] /*n_id*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[5])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n_id*/)( variable[1] /*n_id*/, variable[0]) /*PNode::parent=*/;
+  }
+  ATTR_parser_nodes___PParam____n_type(variable[0]) /*PParam::_n_type*/ =  variable[2] /*n_type*/;
+  /* Register variable[5]: Result */
+  variable[5] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*n_type*/ ==  NIT_NULL /*null*/) || (( variable[2] /*n_type*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*n_type*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*n_type*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*n_type*/)( variable[2] /*n_type*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[5])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[2] /*n_type*/)( variable[2] /*n_type*/, variable[0]) /*PNode::parent=*/;
+  }
+  ATTR_parser_nodes___AParam____n_dotdotdot(variable[0]) /*AParam::_n_dotdotdot*/ =  variable[3] /*n_dotdotdot*/;
+  /* Register variable[5]: Result */
+  variable[5] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[3] /*n_dotdotdot*/ ==  NIT_NULL /*null*/) || (( variable[3] /*n_dotdotdot*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[3] /*n_dotdotdot*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[3] /*n_dotdotdot*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[3] /*n_dotdotdot*/)( variable[3] /*n_dotdotdot*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[5])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[3] /*n_dotdotdot*/)( variable[3] /*n_dotdotdot*/, variable[0]) /*PNode::parent=*/;
+  }
+  return_label404: while(false);
+  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AParam].i] = 1;
+  tracehead = trace.prev;
+  return;
+}
+void parser_prod___AClosureDecl___n_kwwith__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 4539, LOCATE_parser_prod___AClosureDecl___n_kwwith__eq};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  ATTR_parser_nodes___AClosureDecl____n_kwwith(variable[0]) /*AClosureDecl::_n_kwwith*/ =  variable[1] /*n*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[0]) /*PNode::parent=*/;
+  }
+  return_label405: while(false);
+  tracehead = trace.prev;
+  return;
+}
+void parser_prod___AClosureDecl___n_kwbreak__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 4546, LOCATE_parser_prod___AClosureDecl___n_kwbreak__eq};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  ATTR_parser_nodes___AClosureDecl____n_kwbreak(variable[0]) /*AClosureDecl::_n_kwbreak*/ =  variable[1] /*n*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[0]) /*PNode::parent=*/;
+  }
+  return_label406: while(false);
+  tracehead = trace.prev;
+  return;
+}
+void parser_prod___AClosureDecl___n_id__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 4553, LOCATE_parser_prod___AClosureDecl___n_id__eq};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  ATTR_parser_nodes___AClosureDecl____n_id(variable[0]) /*AClosureDecl::_n_id*/ =  variable[1] /*n*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[0]) /*PNode::parent=*/;
   }
+  return_label407: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AType___n_id__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AType::n_id= (src/parser//parser_prod.nit:4419,5--4423:20)"};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  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*/) /*TClassid::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*TClassid::parent=*/;
+void parser_prod___AClosureDecl___n_signature__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 4560, LOCATE_parser_prod___AClosureDecl___n_signature__eq};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  ATTR_parser_nodes___AClosureDecl____n_signature(variable[0]) /*AClosureDecl::_n_signature*/ =  variable[1] /*n*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[0]) /*PNode::parent=*/;
+  }
+  return_label408: while(false);
+  tracehead = trace.prev;
+  return;
+}
+void parser_prod___AClosureDecl___n_expr__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 4567, LOCATE_parser_prod___AClosureDecl___n_expr__eq};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  ATTR_parser_nodes___AClosureDecl____n_expr(variable[0]) /*AClosureDecl::_n_expr*/ =  variable[1] /*n*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[0]) /*PNode::parent=*/;
+  }
+  return_label409: while(false);
+  tracehead = trace.prev;
+  return;
+}
+void parser_prod___AClosureDecl___replace_child(val_t  self, val_t  param0, val_t  param1) {
+  struct trace_t trace = {NULL, NULL, 4608, LOCATE_parser_prod___AClosureDecl___replace_child};
+  val_t variable[5];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Local variable */
+  variable[2] =  param1;
+  /* Register variable[3]: Method return value and escape marker */
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AClosureDecl___replace_child, LOCATE_parser_prod, 4610); nit_exit(1);}
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___AClosureDecl____n_kwwith(variable[0]) /*AClosureDecl::_n_kwwith*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*PNode::parent=*/;
+      /* Register variable[4]: Result */
+      variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_TKwwith, ID_TKwwith)) /*cast TKwwith*/;
+      if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AClosureDecl___replace_child, LOCATE_parser_prod, 4614); nit_exit(1);}
+      ATTR_parser_nodes___AClosureDecl____n_kwwith(variable[0]) /*AClosureDecl::_n_kwwith*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      ATTR_parser_nodes___AClosureDecl____n_kwwith(variable[0]) /*AClosureDecl::_n_kwwith*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label410;
+  }
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___AClosureDecl____n_kwbreak(variable[0]) /*AClosureDecl::_n_kwbreak*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*PNode::parent=*/;
+      /* Register variable[4]: Result */
+      variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_TKwbreak, ID_TKwbreak)) /*cast TKwbreak*/;
+      if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AClosureDecl___replace_child, LOCATE_parser_prod, 4624); nit_exit(1);}
+      ATTR_parser_nodes___AClosureDecl____n_kwbreak(variable[0]) /*AClosureDecl::_n_kwbreak*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      ATTR_parser_nodes___AClosureDecl____n_kwbreak(variable[0]) /*AClosureDecl::_n_kwbreak*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label410;
+  }
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___AClosureDecl____n_id(variable[0]) /*AClosureDecl::_n_id*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*PNode::parent=*/;
+      /* Register variable[4]: Result */
+      variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_TId, ID_TId)) /*cast TId*/;
+      if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AClosureDecl___replace_child, LOCATE_parser_prod, 4634); nit_exit(1);}
+      ATTR_parser_nodes___AClosureDecl____n_id(variable[0]) /*AClosureDecl::_n_id*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      ATTR_parser_nodes___AClosureDecl____n_id(variable[0]) /*AClosureDecl::_n_id*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label410;
+  }
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___AClosureDecl____n_signature(variable[0]) /*AClosureDecl::_n_signature*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*PNode::parent=*/;
+      /* Register variable[4]: Result */
+      variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PSignature, ID_PSignature)) /*cast PSignature*/;
+      if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AClosureDecl___replace_child, LOCATE_parser_prod, 4644); nit_exit(1);}
+      ATTR_parser_nodes___AClosureDecl____n_signature(variable[0]) /*AClosureDecl::_n_signature*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      ATTR_parser_nodes___AClosureDecl____n_signature(variable[0]) /*AClosureDecl::_n_signature*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label410;
+  }
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___AClosureDecl____n_expr(variable[0]) /*AClosureDecl::_n_expr*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*PNode::parent=*/;
+      /* Register variable[4]: Result */
+      variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
+      if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AClosureDecl___replace_child, LOCATE_parser_prod, 4654); nit_exit(1);}
+      ATTR_parser_nodes___AClosureDecl____n_expr(variable[0]) /*AClosureDecl::_n_expr*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      ATTR_parser_nodes___AClosureDecl____n_expr(variable[0]) /*AClosureDecl::_n_expr*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label410;
+  }
+  return_label410: while(false);
+  tracehead = trace.prev;
+  return;
+}
+void parser_prod___AClosureDecl___visit_all(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 4663, LOCATE_parser_prod___AClosureDecl___visit_all};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AClosureDecl____n_kwwith(variable[0]) /*AClosureDecl::_n_kwwith*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AClosureDecl____n_kwwith(variable[0]) /*AClosureDecl::_n_kwwith*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AClosureDecl____n_kwbreak(variable[0]) /*AClosureDecl::_n_kwbreak*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AClosureDecl____n_kwbreak(variable[0]) /*AClosureDecl::_n_kwbreak*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AClosureDecl____n_id(variable[0]) /*AClosureDecl::_n_id*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AClosureDecl____n_id(variable[0]) /*AClosureDecl::_n_id*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AClosureDecl____n_signature(variable[0]) /*AClosureDecl::_n_signature*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AClosureDecl____n_signature(variable[0]) /*AClosureDecl::_n_signature*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AClosureDecl____n_expr(variable[0]) /*AClosureDecl::_n_expr*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AClosureDecl____n_expr(variable[0]) /*AClosureDecl::_n_expr*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  return_label411: while(false);
+  tracehead = trace.prev;
+  return;
+}
+void parser_prod___AClosureDecl___visit_all_reverse(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 4682, LOCATE_parser_prod___AClosureDecl___visit_all_reverse};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AClosureDecl____n_kwwith(variable[0]) /*AClosureDecl::_n_kwwith*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AClosureDecl____n_kwwith(variable[0]) /*AClosureDecl::_n_kwwith*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AClosureDecl____n_kwbreak(variable[0]) /*AClosureDecl::_n_kwbreak*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AClosureDecl____n_kwbreak(variable[0]) /*AClosureDecl::_n_kwbreak*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AClosureDecl____n_id(variable[0]) /*AClosureDecl::_n_id*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AClosureDecl____n_id(variable[0]) /*AClosureDecl::_n_id*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AClosureDecl____n_signature(variable[0]) /*AClosureDecl::_n_signature*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AClosureDecl____n_signature(variable[0]) /*AClosureDecl::_n_signature*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AClosureDecl____n_expr(variable[0]) /*AClosureDecl::_n_expr*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AClosureDecl____n_expr(variable[0]) /*AClosureDecl::_n_expr*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  return_label412: while(false);
+  tracehead = trace.prev;
+  return;
+}
+void parser_prod___AClosureDecl___empty_init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 4575, LOCATE_parser_prod___AClosureDecl___empty_init};
+  val_t variable[2];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AClosureDecl].i]) return;
+  /* Register variable[1]: Method return value and escape marker */
+  return_label413: while(false);
+  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AClosureDecl].i] = 1;
+  tracehead = trace.prev;
+  return;
+}
+void parser_prod___AClosureDecl___init_aclosuredecl(val_t  self, val_t  param0, val_t  param1, val_t  param2, val_t  param3, val_t  param4, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 4577, LOCATE_parser_prod___AClosureDecl___init_aclosuredecl};
+  val_t variable[8];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Local variable */
+  variable[2] =  param1;
+  /* Register variable[3]: Local variable */
+  variable[3] =  param2;
+  /* Register variable[4]: Local variable */
+  variable[4] =  param3;
+  /* Register variable[5]: Local variable */
+  variable[5] =  param4;
+  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AClosureDecl].i]) return;
+  /* Register variable[6]: Method return value and escape marker */
+  CALL_parser_prod___AClosureDecl___empty_init(variable[0])(variable[0], init_table /*YYY*/) /*AClosureDecl::empty_init*/;
+  ATTR_parser_nodes___AClosureDecl____n_kwwith(variable[0]) /*AClosureDecl::_n_kwwith*/ =  variable[1] /*n_kwwith*/;
+  /* Register variable[7]: Result */
+  variable[7] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_kwwith*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_kwwith*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n_kwwith*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_kwwith*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n_kwwith*/)( variable[1] /*n_kwwith*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[7])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n_kwwith*/)( variable[1] /*n_kwwith*/, variable[0]) /*PNode::parent=*/;
+  }
+  ATTR_parser_nodes___AClosureDecl____n_kwbreak(variable[0]) /*AClosureDecl::_n_kwbreak*/ =  variable[2] /*n_kwbreak*/;
+  /* Register variable[7]: Result */
+  variable[7] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*n_kwbreak*/ ==  NIT_NULL /*null*/) || (( variable[2] /*n_kwbreak*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*n_kwbreak*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*n_kwbreak*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*n_kwbreak*/)( variable[2] /*n_kwbreak*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[7])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[2] /*n_kwbreak*/)( variable[2] /*n_kwbreak*/, variable[0]) /*PNode::parent=*/;
+  }
+  ATTR_parser_nodes___AClosureDecl____n_id(variable[0]) /*AClosureDecl::_n_id*/ =  variable[3] /*n_id*/;
+  /* Register variable[7]: Result */
+  variable[7] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[3] /*n_id*/ ==  NIT_NULL /*null*/) || (( variable[3] /*n_id*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[3] /*n_id*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[3] /*n_id*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[3] /*n_id*/)( variable[3] /*n_id*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[7])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[3] /*n_id*/)( variable[3] /*n_id*/, variable[0]) /*PNode::parent=*/;
+  }
+  ATTR_parser_nodes___AClosureDecl____n_signature(variable[0]) /*AClosureDecl::_n_signature*/ =  variable[4] /*n_signature*/;
+  /* Register variable[7]: Result */
+  variable[7] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[4] /*n_signature*/ ==  NIT_NULL /*null*/) || (( variable[4] /*n_signature*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[4] /*n_signature*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[4] /*n_signature*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[4] /*n_signature*/)( variable[4] /*n_signature*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[7])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[4] /*n_signature*/)( variable[4] /*n_signature*/, variable[0]) /*PNode::parent=*/;
+  }
+  ATTR_parser_nodes___AClosureDecl____n_expr(variable[0]) /*AClosureDecl::_n_expr*/ =  variable[5] /*n_expr*/;
+  /* Register variable[7]: Result */
+  variable[7] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[5] /*n_expr*/ ==  NIT_NULL /*null*/) || (( variable[5] /*n_expr*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[5] /*n_expr*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[5] /*n_expr*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[5] /*n_expr*/)( variable[5] /*n_expr*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[7])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[5] /*n_expr*/)( variable[5] /*n_expr*/, variable[0]) /*PNode::parent=*/;
   }
+  return_label414: while(false);
+  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AClosureDecl].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AType___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, "parser_prod::AType::empty_init (src/parser//parser_prod.nit:4427,5--27)"};
+void parser_prod___AType___n_kwnullable__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 4702, LOCATE_parser_prod___AType___n_kwnullable__eq};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AType].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AType].i] = 1;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  ATTR_parser_nodes___AType____n_kwnullable(variable[0]) /*AType::_n_kwnullable*/ =  variable[1] /*n*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[0]) /*PNode::parent=*/;
+  }
+  return_label415: while(false);
   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, "parser_prod::AType::init_atype (src/parser//parser_prod.nit:4429,5--4442:17)"};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-    val_t variable3;
-    val_t variable4;
+void parser_prod___AType___n_id__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 4709, LOCATE_parser_prod___AType___n_id__eq};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  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*/) /*TClassid::==*/)))))));
-  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) /*TClassid::parent=*/;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  ATTR_parser_nodes___AType____n_id(variable[0]) /*AType::_n_id*/ =  variable[1] /*n*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[0]) /*PNode::parent=*/;
   }
-  variable2 = NEW_list___List___init(); /*new List[PType]*/
-  ATTR_parser_nodes___AType____n_types( self) /*AType::_n_types*/ = variable2;
-  variable2 = ((array___AbstractArray___iterator_t)CALL( variable1 /*n_types*/,COLOR_abstract_collection___Collection___iterator))( variable1 /*n_types*/) /*Array::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 failed: src/parser//parser_prod.nit:4440,3--20\n"); 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*/) /*List::add*/;
-    ((parser_prod___PNode___parent__eq_t)CALL( variable3 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable3 /*n*/,  self) /*PType::parent=*/;
-    continue_384: while(0);
-    ((array___ArrayIterator___next_t)CALL(variable2,COLOR_abstract_collection___Iterator___next))(variable2) /*ArrayIterator::next*/;
-  }
-  break_384: while(0);
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AType].i] = 1;
+  return_label416: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AType___replace_child(val_t  self, val_t  param0, val_t  param1) {
-  struct trace_t trace = {NULL, "parser_prod::AType::replace_child (src/parser//parser_prod.nit:4446,5--4468:22)"};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  val_t variable3;
-    val_t variable4;
-  trace.prev = tracehead; tracehead = &trace;
-  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*/) /*PNode::==*/)))))));
-  if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert failed: src/parser//parser_prod.nit:4448,9--32\n"); 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*/) /*TClassid::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*PNode::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_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 failed: src/parser//parser_prod.nit:4452,3--31\n"); 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_label385;
-  }
-  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[Int]*/
-  variable2 = variable3;
-  variable2 = ((range___Range___iterator_t)CALL(variable2,COLOR_abstract_collection___Collection___iterator))(variable2) /*Range::iterator*/;
+  struct trace_t trace = {NULL, NULL, 4742, LOCATE_parser_prod___AType___replace_child};
+  val_t variable[8];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Local variable */
+  variable[2] =  param1;
+  /* Register variable[3]: Method return value and escape marker */
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AType___replace_child, LOCATE_parser_prod, 4744); nit_exit(1);}
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___AType____n_kwnullable(variable[0]) /*AType::_n_kwnullable*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*PNode::parent=*/;
+      /* Register variable[4]: Result */
+      variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_TKwnullable, ID_TKwnullable)) /*cast TKwnullable*/;
+      if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AType___replace_child, LOCATE_parser_prod, 4748); nit_exit(1);}
+      ATTR_parser_nodes___AType____n_kwnullable(variable[0]) /*AType::_n_kwnullable*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      ATTR_parser_nodes___AType____n_kwnullable(variable[0]) /*AType::_n_kwnullable*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label417;
+  }
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___AType____n_id(variable[0]) /*AType::_n_id*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*PNode::parent=*/;
+      /* Register variable[4]: Result */
+      variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_TClassid, ID_TClassid)) /*cast TClassid*/;
+      if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AType___replace_child, LOCATE_parser_prod, 4758); nit_exit(1);}
+      ATTR_parser_nodes___AType____n_id(variable[0]) /*AType::_n_id*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      ATTR_parser_nodes___AType____n_id(variable[0]) /*AType::_n_id*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label417;
+  }
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___AType____n_types(variable[0]) /*AType::_n_types*/;
+  /* Register variable[4]: Result */
+  variable[4] = CALL_abstract_collection___Collection___length(variable[4])(variable[4]) /*List::length*/;
+  /* Register variable[4]: Result */
+  variable[4] = NEW_Range_range___Range___without_last( TAG_Int(0), variable[4]) /*new Range[Int]*/;
+  /* Register variable[4]: For iterator */
+  variable[4] = CALL_abstract_collection___Collection___iterator(variable[4])(variable[4]) /*Range::iterator*/;
   while (true) { /*for*/
-    variable3 = ((abstract_collection___Iterator___is_ok_t)CALL(variable2,COLOR_abstract_collection___Iterator___is_ok))(variable2) /*Iterator::is_ok*/;
-    if (!UNTAG_Bool(variable3)) break; /*for*/
-    variable3 = ((abstract_collection___Iterator___item_t)CALL(variable2,COLOR_abstract_collection___Iterator___item))(variable2) /*Iterator::item*/;
-    variable4 = ATTR_parser_nodes___AType____n_types( self) /*AType::_n_types*/;
-    variable4 = ((list___List_____bra_t)CALL(variable4,COLOR_abstract_collection___Map_____bra))(variable4,  variable3 /*i*/) /*List::[]*/;
-    variable4 = TAG_Bool((variable4 ==  variable0 /*old_child*/) || ((variable4 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable4,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable4, variable0 /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable4,COLOR_kernel___Object_____eqeq))(variable4,  variable0 /*old_child*/) /*PType::==*/)))));
-    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*/) /*PNode::==*/)))))));
-      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 failed: src/parser//parser_prod.nit:4462,7--32\n"); 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) /*PType::parent=*/;
+    /* Register variable[5]: For 'is_ok' result */
+    variable[5] = CALL_abstract_collection___Iterator___is_ok(variable[4])(variable[4]) /*Iterator::is_ok*/;
+    if (!UNTAG_Bool(variable[5])) break; /*for*/
+    variable[5] = CALL_abstract_collection___Iterator___item(variable[4])(variable[4]) /*Iterator::item*/ /* Ensure var: For item*/;
+    /* Register variable[6]: Local variable */
+    variable[6] = variable[5];
+    /* Register variable[7]: Result */
+    variable[7] = ATTR_parser_nodes___AType____n_types(variable[0]) /*AType::_n_types*/;
+    /* Register variable[7]: Result */
+    variable[7] = CALL_abstract_collection___MapRead_____bra(variable[7])(variable[7],  variable[6] /*i*/) /*List::[]*/;
+    /* Register variable[7]: Result */
+    variable[7] = TAG_Bool((variable[7] ==  variable[1] /*old_child*/) || ((variable[7] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[7])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[7], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[7])(variable[7],  variable[1] /*old_child*/) /*Object::==*/)))));
+    if (UNTAG_Bool(variable[7])) { /*if*/
+      /* Register variable[7]: Result */
+      variable[7] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+      if (UNTAG_Bool(variable[7])) { /*if*/
+        /* Register variable[7]: Result */
+        variable[7] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PType, ID_PType)) /*cast PType*/;
+        if (!UNTAG_Bool(variable[7])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AType___replace_child, LOCATE_parser_prod, 4768); nit_exit(1);}
+        /* Register variable[7]: Result */
+        variable[7] = ATTR_parser_nodes___AType____n_types(variable[0]) /*AType::_n_types*/;
+        CALL_abstract_collection___Map_____braeq(variable[7])(variable[7],  variable[6] /*i*/,  variable[2] /*new_child*/) /*List::[]=*/;
+        CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*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*/;
+        /* Register variable[7]: Result */
+        variable[7] = ATTR_parser_nodes___AType____n_types(variable[0]) /*AType::_n_types*/;
+        CALL_abstract_collection___Map___remove_at(variable[7])(variable[7],  variable[6] /*i*/) /*List::remove_at*/;
       }
-      goto return_label385;
+      goto return_label417;
     }
-    continue_386: while(0);
-    ((abstract_collection___Iterator___next_t)CALL(variable2,COLOR_abstract_collection___Iterator___next))(variable2) /*Iterator::next*/;
+    continue_418: while(0);
+    CALL_abstract_collection___Iterator___next(variable[4])(variable[4]) /*Iterator::next*/;
   }
-  break_386: while(0);
-  return_label385: while(false);
+  break_418: while(0);
+  return_label417: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AType___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AType::visit_all (src/parser//parser_prod.nit:4473,5--4479:25)"};
-  val_t variable0;
-  val_t variable1;
-    val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  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*/) /*TClassid::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AType____n_id( self) /*AType::_n_id*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
-  variable1 = ATTR_parser_nodes___AType____n_types( self) /*AType::_n_types*/;
-  variable1 = ((list___List___iterator_t)CALL(variable1,COLOR_abstract_collection___Collection___iterator))(variable1) /*List::iterator*/;
+  struct trace_t trace = {NULL, NULL, 4779, LOCATE_parser_prod___AType___visit_all};
+  val_t variable[6];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AType____n_kwnullable(variable[0]) /*AType::_n_kwnullable*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AType____n_kwnullable(variable[0]) /*AType::_n_kwnullable*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AType____n_id(variable[0]) /*AType::_n_id*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AType____n_id(variable[0]) /*AType::_n_id*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AType____n_types(variable[0]) /*AType::_n_types*/;
+  /* Register variable[3]: For iterator */
+  variable[3] = CALL_abstract_collection___Collection___iterator(variable[3])(variable[3]) /*List::iterator*/;
   while (true) { /*for*/
-    variable2 = ((list___ListIterator___is_ok_t)CALL(variable1,COLOR_abstract_collection___Iterator___is_ok))(variable1) /*ListIterator::is_ok*/;
-    if (!UNTAG_Bool(variable2)) break; /*for*/
-    variable2 = ((list___ListIterator___item_t)CALL(variable1,COLOR_abstract_collection___Iterator___item))(variable1) /*ListIterator::item*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/,  variable2 /*n*/) /*Visitor::visit*/;
-    continue_388: while(0);
-    ((list___ListIterator___next_t)CALL(variable1,COLOR_abstract_collection___Iterator___next))(variable1) /*ListIterator::next*/;
+    /* Register variable[4]: For 'is_ok' result */
+    variable[4] = CALL_abstract_collection___Iterator___is_ok(variable[3])(variable[3]) /*ListIterator::is_ok*/;
+    if (!UNTAG_Bool(variable[4])) break; /*for*/
+    variable[4] = CALL_abstract_collection___Iterator___item(variable[3])(variable[3]) /*ListIterator::item*/ /* Ensure var: For item*/;
+    /* Register variable[5]: Local variable */
+    variable[5] = variable[4];
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/,  variable[5] /*n*/) /*Visitor::visit*/;
+    continue_420: while(0);
+    CALL_abstract_collection___Iterator___next(variable[3])(variable[3]) /*ListIterator::next*/;
   }
-  break_388: while(0);
+  break_420: while(0);
+  return_label419: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AType___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AType::visit_all_reverse (src/parser//parser_prod.nit:4483,5--4492:11)"};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  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*/) /*TClassid::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AType____n_id( self) /*AType::_n_id*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
-  variable2 = ATTR_parser_nodes___AType____n_types( self) /*AType::_n_types*/;
-  variable2 = ((list___List___length_t)CALL(variable2,COLOR_abstract_collection___Collection___length))(variable2) /*List::length*/;
-  variable1 = variable2;
+  struct trace_t trace = {NULL, NULL, 4792, LOCATE_parser_prod___AType___visit_all_reverse};
+  val_t variable[5];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AType____n_kwnullable(variable[0]) /*AType::_n_kwnullable*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AType____n_kwnullable(variable[0]) /*AType::_n_kwnullable*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AType____n_id(variable[0]) /*AType::_n_id*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AType____n_id(variable[0]) /*AType::_n_id*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Local variable */
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___AType____n_types(variable[0]) /*AType::_n_types*/;
+  /* Register variable[4]: Result */
+  variable[4] = CALL_abstract_collection___Collection___length(variable[4])(variable[4]) /*List::length*/;
+  variable[3] = variable[4];
   while (true) { /*while*/
-    variable2 = TAG_Bool(UNTAG_Int( variable1 /*i*/)>=UNTAG_Int( TAG_Int(0)));
-    if (!UNTAG_Bool(variable2)) break; /* while*/
-    variable2 = ATTR_parser_nodes___AType____n_types( self) /*AType::_n_types*/;
-    variable2 = ((list___List_____bra_t)CALL(variable2,COLOR_abstract_collection___Map_____bra))(variable2,  variable1 /*i*/) /*List::[]*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable2) /*Visitor::visit*/;
-    variable2 = TAG_Int(UNTAG_Int( variable1 /*i*/)-UNTAG_Int( TAG_Int(1)));
-    variable1 = variable2 /*i=*/;
-    continue_390: while(0);
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(UNTAG_Int( variable[3] /*i*/)>=UNTAG_Int( TAG_Int(0)));
+    if (!UNTAG_Bool(variable[4])) break; /* while*/
+    /* Register variable[4]: Result */
+    variable[4] = ATTR_parser_nodes___AType____n_types(variable[0]) /*AType::_n_types*/;
+    /* Register variable[4]: Result */
+    variable[4] = CALL_abstract_collection___MapRead_____bra(variable[4])(variable[4],  variable[3] /*i*/) /*List::[]*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[4]) /*Visitor::visit*/;
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Int(UNTAG_Int( variable[3] /*i*/)-UNTAG_Int( TAG_Int(1)));
+    variable[3] = variable[4] /*i=*/;
+    continue_422: while(0);
   }
-  break_390: while(0);
+  break_422: while(0);
+  return_label421: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___ABlockExpr___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, "parser_prod::ABlockExpr::empty_init (src/parser//parser_prod.nit:4499,5--27)"};
-  trace.prev = tracehead; tracehead = &trace;
-  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, "parser_prod::ABlockExpr::init_ablockexpr (src/parser//parser_prod.nit:4501,5--4509:17)"};
-  val_t variable0;
-  val_t variable1;
-    val_t variable2;
-    val_t variable3;
-  trace.prev = tracehead; tracehead = &trace;
-  variable0 =  param0;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ABlockExpr].i]) return;
-  variable1 = NEW_list___List___init(); /*new List[PExpr]*/
-  ATTR_parser_nodes___ABlockExpr____n_expr( self) /*ABlockExpr::_n_expr*/ = variable1;
-  variable1 = ((array___AbstractArray___iterator_t)CALL( variable0 /*n_expr*/,COLOR_abstract_collection___Collection___iterator))( variable0 /*n_expr*/) /*Array::iterator*/;
+void parser_prod___AType___empty_init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 4717, LOCATE_parser_prod___AType___empty_init};
+  val_t variable[2];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AType].i]) return;
+  /* Register variable[1]: Method return value and escape marker */
+  return_label423: while(false);
+  init_table[VAL2OBJ(variable[0])->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, val_t  param2, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 4719, LOCATE_parser_prod___AType___init_atype};
+  val_t variable[9];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Local variable */
+  variable[2] =  param1;
+  /* Register variable[3]: Local variable */
+  variable[3] =  param2;
+  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AType].i]) return;
+  /* Register variable[4]: Method return value and escape marker */
+  CALL_parser_prod___AType___empty_init(variable[0])(variable[0], init_table /*YYY*/) /*AType::empty_init*/;
+  ATTR_parser_nodes___AType____n_kwnullable(variable[0]) /*AType::_n_kwnullable*/ =  variable[1] /*n_kwnullable*/;
+  /* Register variable[5]: Result */
+  variable[5] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_kwnullable*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_kwnullable*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n_kwnullable*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_kwnullable*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n_kwnullable*/)( variable[1] /*n_kwnullable*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[5])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n_kwnullable*/)( variable[1] /*n_kwnullable*/, variable[0]) /*PNode::parent=*/;
+  }
+  ATTR_parser_nodes___AType____n_id(variable[0]) /*AType::_n_id*/ =  variable[2] /*n_id*/;
+  /* Register variable[5]: Result */
+  variable[5] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*n_id*/ ==  NIT_NULL /*null*/) || (( variable[2] /*n_id*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*n_id*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*n_id*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*n_id*/)( variable[2] /*n_id*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[5])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[2] /*n_id*/)( variable[2] /*n_id*/, variable[0]) /*PNode::parent=*/;
+  }
+  /* Register variable[5]: Result */
+  variable[5] = NEW_List_list___List___init() /*new List[PType]*/;
+  ATTR_parser_nodes___AType____n_types(variable[0]) /*AType::_n_types*/ = variable[5];
+  /* Register variable[5]: For iterator */
+  variable[5] = CALL_abstract_collection___Collection___iterator( variable[3] /*n_types*/)( variable[3] /*n_types*/) /*Collection::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 failed: src/parser//parser_prod.nit:4507,3--20\n"); 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*/) /*List::add*/;
-    ((parser_prod___PNode___parent__eq_t)CALL( variable2 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable2 /*n*/,  self) /*PExpr::parent=*/;
-    continue_393: while(0);
-    ((array___ArrayIterator___next_t)CALL(variable1,COLOR_abstract_collection___Iterator___next))(variable1) /*ArrayIterator::next*/;
-  }
-  break_393: while(0);
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ABlockExpr].i] = 1;
+    /* Register variable[6]: For 'is_ok' result */
+    variable[6] = CALL_abstract_collection___Iterator___is_ok(variable[5])(variable[5]) /*Iterator::is_ok*/;
+    if (!UNTAG_Bool(variable[6])) break; /*for*/
+    variable[6] = CALL_abstract_collection___Iterator___item(variable[5])(variable[5]) /*Iterator::item*/ /* Ensure var: For item*/;
+    /* Register variable[7]: Local variable */
+    variable[7] = variable[6];
+    /* Register variable[8]: Result */
+    variable[8] = TAG_Bool(( variable[7] /*n*/==NIT_NULL) || VAL_ISA( variable[7] /*n*/, COLOR_PType, ID_PType)) /*cast PType*/;
+    if (!UNTAG_Bool(variable[8])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AType___init_atype, LOCATE_parser_prod, 4736); nit_exit(1);}
+    /* Register variable[8]: Result */
+    variable[8] = ATTR_parser_nodes___AType____n_types(variable[0]) /*AType::_n_types*/;
+    CALL_abstract_collection___SimpleCollection___add(variable[8])(variable[8],  variable[7] /*n*/) /*IndexedCollection::add*/;
+    CALL_parser_prod___PNode___parent__eq( variable[7] /*n*/)( variable[7] /*n*/, variable[0]) /*PNode::parent=*/;
+    continue_425: while(0);
+    CALL_abstract_collection___Iterator___next(variable[5])(variable[5]) /*Iterator::next*/;
+  }
+  break_425: while(0);
+  return_label424: while(false);
+  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AType].i] = 1;
   tracehead = trace.prev;
   return;
 }
 void parser_prod___ABlockExpr___replace_child(val_t  self, val_t  param0, val_t  param1) {
-  struct trace_t trace = {NULL, "parser_prod::ABlockExpr::replace_child (src/parser//parser_prod.nit:4513,5--4525:22)"};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  val_t variable3;
-    val_t variable4;
-  trace.prev = tracehead; tracehead = &trace;
-  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*/) /*PNode::==*/)))))));
-  if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert failed: src/parser//parser_prod.nit:4515,9--32\n"); 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[Int]*/
-  variable2 = variable3;
-  variable2 = ((range___Range___iterator_t)CALL(variable2,COLOR_abstract_collection___Collection___iterator))(variable2) /*Range::iterator*/;
+  struct trace_t trace = {NULL, NULL, 4826, LOCATE_parser_prod___ABlockExpr___replace_child};
+  val_t variable[8];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Local variable */
+  variable[2] =  param1;
+  /* Register variable[3]: Method return value and escape marker */
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ABlockExpr___replace_child, LOCATE_parser_prod, 4828); nit_exit(1);}
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___ABlockExpr____n_expr(variable[0]) /*ABlockExpr::_n_expr*/;
+  /* Register variable[4]: Result */
+  variable[4] = CALL_abstract_collection___Collection___length(variable[4])(variable[4]) /*List::length*/;
+  /* Register variable[4]: Result */
+  variable[4] = NEW_Range_range___Range___without_last( TAG_Int(0), variable[4]) /*new Range[Int]*/;
+  /* Register variable[4]: For iterator */
+  variable[4] = CALL_abstract_collection___Collection___iterator(variable[4])(variable[4]) /*Range::iterator*/;
   while (true) { /*for*/
-    variable3 = ((abstract_collection___Iterator___is_ok_t)CALL(variable2,COLOR_abstract_collection___Iterator___is_ok))(variable2) /*Iterator::is_ok*/;
-    if (!UNTAG_Bool(variable3)) break; /*for*/
-    variable3 = ((abstract_collection___Iterator___item_t)CALL(variable2,COLOR_abstract_collection___Iterator___item))(variable2) /*Iterator::item*/;
-    variable4 = ATTR_parser_nodes___ABlockExpr____n_expr( self) /*ABlockExpr::_n_expr*/;
-    variable4 = ((list___List_____bra_t)CALL(variable4,COLOR_abstract_collection___Map_____bra))(variable4,  variable3 /*i*/) /*List::[]*/;
-    variable4 = TAG_Bool((variable4 ==  variable0 /*old_child*/) || ((variable4 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable4,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable4, variable0 /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable4,COLOR_kernel___Object_____eqeq))(variable4,  variable0 /*old_child*/) /*PExpr::==*/)))));
-    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*/) /*PNode::==*/)))))));
-      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 failed: src/parser//parser_prod.nit:4519,7--32\n"); 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) /*PExpr::parent=*/;
+    /* Register variable[5]: For 'is_ok' result */
+    variable[5] = CALL_abstract_collection___Iterator___is_ok(variable[4])(variable[4]) /*Iterator::is_ok*/;
+    if (!UNTAG_Bool(variable[5])) break; /*for*/
+    variable[5] = CALL_abstract_collection___Iterator___item(variable[4])(variable[4]) /*Iterator::item*/ /* Ensure var: For item*/;
+    /* Register variable[6]: Local variable */
+    variable[6] = variable[5];
+    /* Register variable[7]: Result */
+    variable[7] = ATTR_parser_nodes___ABlockExpr____n_expr(variable[0]) /*ABlockExpr::_n_expr*/;
+    /* Register variable[7]: Result */
+    variable[7] = CALL_abstract_collection___MapRead_____bra(variable[7])(variable[7],  variable[6] /*i*/) /*List::[]*/;
+    /* Register variable[7]: Result */
+    variable[7] = TAG_Bool((variable[7] ==  variable[1] /*old_child*/) || ((variable[7] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[7])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[7], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[7])(variable[7],  variable[1] /*old_child*/) /*Object::==*/)))));
+    if (UNTAG_Bool(variable[7])) { /*if*/
+      /* Register variable[7]: Result */
+      variable[7] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+      if (UNTAG_Bool(variable[7])) { /*if*/
+        /* Register variable[7]: Result */
+        variable[7] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
+        if (!UNTAG_Bool(variable[7])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ABlockExpr___replace_child, LOCATE_parser_prod, 4832); nit_exit(1);}
+        /* Register variable[7]: Result */
+        variable[7] = ATTR_parser_nodes___ABlockExpr____n_expr(variable[0]) /*ABlockExpr::_n_expr*/;
+        CALL_abstract_collection___Map_____braeq(variable[7])(variable[7],  variable[6] /*i*/,  variable[2] /*new_child*/) /*List::[]=*/;
+        CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*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*/;
+        /* Register variable[7]: Result */
+        variable[7] = ATTR_parser_nodes___ABlockExpr____n_expr(variable[0]) /*ABlockExpr::_n_expr*/;
+        CALL_abstract_collection___Map___remove_at(variable[7])(variable[7],  variable[6] /*i*/) /*List::remove_at*/;
       }
-      goto return_label394;
+      goto return_label426;
     }
-    continue_395: while(0);
-    ((abstract_collection___Iterator___next_t)CALL(variable2,COLOR_abstract_collection___Iterator___next))(variable2) /*Iterator::next*/;
+    continue_427: while(0);
+    CALL_abstract_collection___Iterator___next(variable[4])(variable[4]) /*Iterator::next*/;
   }
-  break_395: while(0);
-  return_label394: while(false);
+  break_427: while(0);
+  return_label426: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___ABlockExpr___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::ABlockExpr::visit_all (src/parser//parser_prod.nit:4530,5--4533:25)"};
-  val_t variable0;
-  val_t variable1;
-    val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  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*/;
+  struct trace_t trace = {NULL, NULL, 4843, LOCATE_parser_prod___ABlockExpr___visit_all};
+  val_t variable[6];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___ABlockExpr____n_expr(variable[0]) /*ABlockExpr::_n_expr*/;
+  /* Register variable[3]: For iterator */
+  variable[3] = CALL_abstract_collection___Collection___iterator(variable[3])(variable[3]) /*List::iterator*/;
   while (true) { /*for*/
-    variable2 = ((list___ListIterator___is_ok_t)CALL(variable1,COLOR_abstract_collection___Iterator___is_ok))(variable1) /*ListIterator::is_ok*/;
-    if (!UNTAG_Bool(variable2)) break; /*for*/
-    variable2 = ((list___ListIterator___item_t)CALL(variable1,COLOR_abstract_collection___Iterator___item))(variable1) /*ListIterator::item*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/,  variable2 /*n*/) /*Visitor::visit*/;
-    continue_397: while(0);
-    ((list___ListIterator___next_t)CALL(variable1,COLOR_abstract_collection___Iterator___next))(variable1) /*ListIterator::next*/;
+    /* Register variable[4]: For 'is_ok' result */
+    variable[4] = CALL_abstract_collection___Iterator___is_ok(variable[3])(variable[3]) /*ListIterator::is_ok*/;
+    if (!UNTAG_Bool(variable[4])) break; /*for*/
+    variable[4] = CALL_abstract_collection___Iterator___item(variable[3])(variable[3]) /*ListIterator::item*/ /* Ensure var: For item*/;
+    /* Register variable[5]: Local variable */
+    variable[5] = variable[4];
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/,  variable[5] /*n*/) /*Visitor::visit*/;
+    continue_429: while(0);
+    CALL_abstract_collection___Iterator___next(variable[3])(variable[3]) /*ListIterator::next*/;
   }
-  break_397: while(0);
+  break_429: while(0);
+  return_label428: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___ABlockExpr___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::ABlockExpr::visit_all_reverse (src/parser//parser_prod.nit:4537,5--4543:11)"};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  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;
+  struct trace_t trace = {NULL, NULL, 4850, LOCATE_parser_prod___ABlockExpr___visit_all_reverse};
+  val_t variable[5];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  /* Register variable[3]: Local variable */
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___ABlockExpr____n_expr(variable[0]) /*ABlockExpr::_n_expr*/;
+  /* Register variable[4]: Result */
+  variable[4] = CALL_abstract_collection___Collection___length(variable[4])(variable[4]) /*List::length*/;
+  variable[3] = variable[4];
   while (true) { /*while*/
-    variable2 = TAG_Bool(UNTAG_Int( variable1 /*i*/)>=UNTAG_Int( TAG_Int(0)));
-    if (!UNTAG_Bool(variable2)) break; /* while*/
-    variable2 = ATTR_parser_nodes___ABlockExpr____n_expr( self) /*ABlockExpr::_n_expr*/;
-    variable2 = ((list___List_____bra_t)CALL(variable2,COLOR_abstract_collection___Map_____bra))(variable2,  variable1 /*i*/) /*List::[]*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable2) /*Visitor::visit*/;
-    variable2 = TAG_Int(UNTAG_Int( variable1 /*i*/)-UNTAG_Int( TAG_Int(1)));
-    variable1 = variable2 /*i=*/;
-    continue_399: while(0);
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(UNTAG_Int( variable[3] /*i*/)>=UNTAG_Int( TAG_Int(0)));
+    if (!UNTAG_Bool(variable[4])) break; /* while*/
+    /* Register variable[4]: Result */
+    variable[4] = ATTR_parser_nodes___ABlockExpr____n_expr(variable[0]) /*ABlockExpr::_n_expr*/;
+    /* Register variable[4]: Result */
+    variable[4] = CALL_abstract_collection___MapRead_____bra(variable[4])(variable[4],  variable[3] /*i*/) /*List::[]*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[4]) /*Visitor::visit*/;
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Int(UNTAG_Int( variable[3] /*i*/)-UNTAG_Int( TAG_Int(1)));
+    variable[3] = variable[4] /*i=*/;
+    continue_431: while(0);
   }
-  break_399: while(0);
+  break_431: while(0);
+  return_label430: while(false);
+  tracehead = trace.prev;
+  return;
+}
+void parser_prod___ABlockExpr___empty_init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 4811, LOCATE_parser_prod___ABlockExpr___empty_init};
+  val_t variable[2];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ABlockExpr].i]) return;
+  /* Register variable[1]: Method return value and escape marker */
+  return_label432: while(false);
+  init_table[VAL2OBJ(variable[0])->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, 4813, LOCATE_parser_prod___ABlockExpr___init_ablockexpr};
+  val_t variable[7];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ABlockExpr].i]) return;
+  /* Register variable[2]: Method return value and escape marker */
+  CALL_parser_prod___ABlockExpr___empty_init(variable[0])(variable[0], init_table /*YYY*/) /*ABlockExpr::empty_init*/;
+  /* Register variable[3]: Result */
+  variable[3] = NEW_List_list___List___init() /*new List[PExpr]*/;
+  ATTR_parser_nodes___ABlockExpr____n_expr(variable[0]) /*ABlockExpr::_n_expr*/ = variable[3];
+  /* Register variable[3]: For iterator */
+  variable[3] = CALL_abstract_collection___Collection___iterator( variable[1] /*n_expr*/)( variable[1] /*n_expr*/) /*Collection::iterator*/;
+  while (true) { /*for*/
+    /* Register variable[4]: For 'is_ok' result */
+    variable[4] = CALL_abstract_collection___Iterator___is_ok(variable[3])(variable[3]) /*Iterator::is_ok*/;
+    if (!UNTAG_Bool(variable[4])) break; /*for*/
+    variable[4] = CALL_abstract_collection___Iterator___item(variable[3])(variable[3]) /*Iterator::item*/ /* Ensure var: For item*/;
+    /* Register variable[5]: Local variable */
+    variable[5] = variable[4];
+    /* Register variable[6]: Result */
+    variable[6] = TAG_Bool(( variable[5] /*n*/==NIT_NULL) || VAL_ISA( variable[5] /*n*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
+    if (!UNTAG_Bool(variable[6])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ABlockExpr___init_ablockexpr, LOCATE_parser_prod, 4820); nit_exit(1);}
+    /* Register variable[6]: Result */
+    variable[6] = ATTR_parser_nodes___ABlockExpr____n_expr(variable[0]) /*ABlockExpr::_n_expr*/;
+    CALL_abstract_collection___SimpleCollection___add(variable[6])(variable[6],  variable[5] /*n*/) /*IndexedCollection::add*/;
+    CALL_parser_prod___PNode___parent__eq( variable[5] /*n*/)( variable[5] /*n*/, variable[0]) /*PNode::parent=*/;
+    continue_434: while(0);
+    CALL_abstract_collection___Iterator___next(variable[3])(variable[3]) /*Iterator::next*/;
+  }
+  break_434: while(0);
+  return_label433: while(false);
+  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ABlockExpr].i] = 1;
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AVardeclExpr___n_kwvar__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AVardeclExpr::n_kwvar= (src/parser//parser_prod.nit:4549,5--4553:20)"};
-  val_t variable0;
-  val_t variable1;
+  struct trace_t trace = {NULL, NULL, 4862, LOCATE_parser_prod___AVardeclExpr___n_kwvar__eq};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  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*/) /*TKwvar::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*TKwvar::parent=*/;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  ATTR_parser_nodes___AVardeclExpr____n_kwvar(variable[0]) /*AVardeclExpr::_n_kwvar*/ =  variable[1] /*n*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[0]) /*PNode::parent=*/;
   }
+  return_label435: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AVardeclExpr___n_id__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AVardeclExpr::n_id= (src/parser//parser_prod.nit:4556,5--4560:20)"};
-  val_t variable0;
-  val_t variable1;
+  struct trace_t trace = {NULL, NULL, 4869, LOCATE_parser_prod___AVardeclExpr___n_id__eq};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  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*/) /*TId::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*TId::parent=*/;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  ATTR_parser_nodes___AVardeclExpr____n_id(variable[0]) /*AVardeclExpr::_n_id*/ =  variable[1] /*n*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[0]) /*PNode::parent=*/;
   }
+  return_label436: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AVardeclExpr___n_type__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AVardeclExpr::n_type= (src/parser//parser_prod.nit:4563,5--4567:20)"};
-  val_t variable0;
-  val_t variable1;
+  struct trace_t trace = {NULL, NULL, 4876, LOCATE_parser_prod___AVardeclExpr___n_type__eq};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  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*/) /*PType::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PType::parent=*/;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  ATTR_parser_nodes___AVardeclExpr____n_type(variable[0]) /*AVardeclExpr::_n_type*/ =  variable[1] /*n*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[0]) /*PNode::parent=*/;
   }
+  return_label437: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AVardeclExpr___n_assign__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AVardeclExpr::n_assign= (src/parser//parser_prod.nit:4570,5--4574:20)"};
-  val_t variable0;
-  val_t variable1;
+  struct trace_t trace = {NULL, NULL, 4883, LOCATE_parser_prod___AVardeclExpr___n_assign__eq};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  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*/) /*TAssign::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*TAssign::parent=*/;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  ATTR_parser_nodes___AVardeclExpr____n_assign(variable[0]) /*AVardeclExpr::_n_assign*/ =  variable[1] /*n*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[0]) /*PNode::parent=*/;
   }
+  return_label438: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AVardeclExpr___n_expr__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AVardeclExpr::n_expr= (src/parser//parser_prod.nit:4577,5--4581:20)"};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  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*/) /*PExpr::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PExpr::parent=*/;
+  struct trace_t trace = {NULL, NULL, 4890, LOCATE_parser_prod___AVardeclExpr___n_expr__eq};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  ATTR_parser_nodes___AVardeclExpr____n_expr(variable[0]) /*AVardeclExpr::_n_expr*/ =  variable[1] /*n*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[0]) /*PNode::parent=*/;
   }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AVardeclExpr___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, "parser_prod::AVardeclExpr::empty_init (src/parser//parser_prod.nit:4585,5--27)"};
-  trace.prev = tracehead; tracehead = &trace;
-  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, "parser_prod::AVardeclExpr::init_avardeclexpr (src/parser//parser_prod.nit:4587,5--4613:22)"};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  val_t variable3;
-  val_t variable4;
-  val_t variable5;
-  trace.prev = tracehead; tracehead = &trace;
-  variable0 =  param0;
-  variable1 =  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*/) /*TKwvar::==*/)))))));
-  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) /*TKwvar::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*/) /*TId::==*/)))))));
-  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) /*TId::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*/) /*PType::==*/)))))));
-  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) /*PType::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*/) /*TAssign::==*/)))))));
-  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) /*TAssign::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*/) /*PExpr::==*/)))))));
-  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) /*PExpr::parent=*/;
-  }
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AVardeclExpr].i] = 1;
+  return_label439: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AVardeclExpr___replace_child(val_t  self, val_t  param0, val_t  param1) {
-  struct trace_t trace = {NULL, "parser_prod::AVardeclExpr::replace_child (src/parser//parser_prod.nit:4617,5--4668:18)"};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  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*/) /*PNode::==*/)))))));
-  if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert failed: src/parser//parser_prod.nit:4619,9--32\n"); 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*/) /*TKwvar::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*PNode::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_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 failed: src/parser//parser_prod.nit:4623,3--29\n"); 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_label407;
-  }
-  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*/) /*TId::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*PNode::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_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 failed: src/parser//parser_prod.nit:4633,3--26\n"); 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_label407;
-  }
-  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*/) /*PType::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*PNode::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_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 failed: src/parser//parser_prod.nit:4643,3--28\n"); 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_label407;
-  }
-  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*/) /*TAssign::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*PNode::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_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 failed: src/parser//parser_prod.nit:4653,3--30\n"); 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_label407;
-  }
-  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*/) /*PExpr::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*PNode::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_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 failed: src/parser//parser_prod.nit:4663,3--28\n"); 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_label407;
+  struct trace_t trace = {NULL, NULL, 4931, LOCATE_parser_prod___AVardeclExpr___replace_child};
+  val_t variable[5];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Local variable */
+  variable[2] =  param1;
+  /* Register variable[3]: Method return value and escape marker */
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AVardeclExpr___replace_child, LOCATE_parser_prod, 4933); nit_exit(1);}
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___AVardeclExpr____n_kwvar(variable[0]) /*AVardeclExpr::_n_kwvar*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*PNode::parent=*/;
+      /* Register variable[4]: Result */
+      variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_TKwvar, ID_TKwvar)) /*cast TKwvar*/;
+      if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AVardeclExpr___replace_child, LOCATE_parser_prod, 4937); nit_exit(1);}
+      ATTR_parser_nodes___AVardeclExpr____n_kwvar(variable[0]) /*AVardeclExpr::_n_kwvar*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      ATTR_parser_nodes___AVardeclExpr____n_kwvar(variable[0]) /*AVardeclExpr::_n_kwvar*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label440;
+  }
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___AVardeclExpr____n_id(variable[0]) /*AVardeclExpr::_n_id*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*PNode::parent=*/;
+      /* Register variable[4]: Result */
+      variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_TId, ID_TId)) /*cast TId*/;
+      if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AVardeclExpr___replace_child, LOCATE_parser_prod, 4947); nit_exit(1);}
+      ATTR_parser_nodes___AVardeclExpr____n_id(variable[0]) /*AVardeclExpr::_n_id*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      ATTR_parser_nodes___AVardeclExpr____n_id(variable[0]) /*AVardeclExpr::_n_id*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label440;
+  }
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___AVardeclExpr____n_type(variable[0]) /*AVardeclExpr::_n_type*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*PNode::parent=*/;
+      /* Register variable[4]: Result */
+      variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PType, ID_PType)) /*cast PType*/;
+      if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AVardeclExpr___replace_child, LOCATE_parser_prod, 4957); nit_exit(1);}
+      ATTR_parser_nodes___AVardeclExpr____n_type(variable[0]) /*AVardeclExpr::_n_type*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      ATTR_parser_nodes___AVardeclExpr____n_type(variable[0]) /*AVardeclExpr::_n_type*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label440;
+  }
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___AVardeclExpr____n_assign(variable[0]) /*AVardeclExpr::_n_assign*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*PNode::parent=*/;
+      /* Register variable[4]: Result */
+      variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_TAssign, ID_TAssign)) /*cast TAssign*/;
+      if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AVardeclExpr___replace_child, LOCATE_parser_prod, 4967); nit_exit(1);}
+      ATTR_parser_nodes___AVardeclExpr____n_assign(variable[0]) /*AVardeclExpr::_n_assign*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      ATTR_parser_nodes___AVardeclExpr____n_assign(variable[0]) /*AVardeclExpr::_n_assign*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label440;
+  }
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___AVardeclExpr____n_expr(variable[0]) /*AVardeclExpr::_n_expr*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*PNode::parent=*/;
+      /* Register variable[4]: Result */
+      variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
+      if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AVardeclExpr___replace_child, LOCATE_parser_prod, 4977); nit_exit(1);}
+      ATTR_parser_nodes___AVardeclExpr____n_expr(variable[0]) /*AVardeclExpr::_n_expr*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      ATTR_parser_nodes___AVardeclExpr____n_expr(variable[0]) /*AVardeclExpr::_n_expr*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label440;
   }
-  return_label407: while(false);
+  return_label440: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AVardeclExpr___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AVardeclExpr::visit_all (src/parser//parser_prod.nit:4672,5--4687:27)"};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  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*/) /*TKwvar::==*/)))))));
-  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*/) /*TId::==*/)))))));
-  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*/) /*PType::==*/)))))));
-  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*/) /*TAssign::==*/)))))));
-  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*/) /*PExpr::==*/)))))));
-  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*/;
-  }
+  struct trace_t trace = {NULL, NULL, 4986, LOCATE_parser_prod___AVardeclExpr___visit_all};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AVardeclExpr____n_kwvar(variable[0]) /*AVardeclExpr::_n_kwvar*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AVardeclExpr____n_kwvar(variable[0]) /*AVardeclExpr::_n_kwvar*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AVardeclExpr____n_id(variable[0]) /*AVardeclExpr::_n_id*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AVardeclExpr____n_id(variable[0]) /*AVardeclExpr::_n_id*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AVardeclExpr____n_type(variable[0]) /*AVardeclExpr::_n_type*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AVardeclExpr____n_type(variable[0]) /*AVardeclExpr::_n_type*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AVardeclExpr____n_assign(variable[0]) /*AVardeclExpr::_n_assign*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AVardeclExpr____n_assign(variable[0]) /*AVardeclExpr::_n_assign*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AVardeclExpr____n_expr(variable[0]) /*AVardeclExpr::_n_expr*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AVardeclExpr____n_expr(variable[0]) /*AVardeclExpr::_n_expr*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  return_label441: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AVardeclExpr___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AVardeclExpr::visit_all_reverse (src/parser//parser_prod.nit:4691,5--4706:27)"};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  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*/) /*TKwvar::==*/)))))));
-  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*/) /*TId::==*/)))))));
-  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*/) /*PType::==*/)))))));
-  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*/) /*TAssign::==*/)))))));
-  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*/) /*PExpr::==*/)))))));
-  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*/;
-  }
+  struct trace_t trace = {NULL, NULL, 5005, LOCATE_parser_prod___AVardeclExpr___visit_all_reverse};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AVardeclExpr____n_kwvar(variable[0]) /*AVardeclExpr::_n_kwvar*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AVardeclExpr____n_kwvar(variable[0]) /*AVardeclExpr::_n_kwvar*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AVardeclExpr____n_id(variable[0]) /*AVardeclExpr::_n_id*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AVardeclExpr____n_id(variable[0]) /*AVardeclExpr::_n_id*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AVardeclExpr____n_type(variable[0]) /*AVardeclExpr::_n_type*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AVardeclExpr____n_type(variable[0]) /*AVardeclExpr::_n_type*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AVardeclExpr____n_assign(variable[0]) /*AVardeclExpr::_n_assign*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AVardeclExpr____n_assign(variable[0]) /*AVardeclExpr::_n_assign*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AVardeclExpr____n_expr(variable[0]) /*AVardeclExpr::_n_expr*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AVardeclExpr____n_expr(variable[0]) /*AVardeclExpr::_n_expr*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  return_label442: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AReturnExpr___n_kwreturn__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AReturnExpr::n_kwreturn= (src/parser//parser_prod.nit:4711,5--4715:20)"};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___AVardeclExpr___empty_init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 4898, LOCATE_parser_prod___AVardeclExpr___empty_init};
+  val_t variable[2];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  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*/) /*TKwreturn::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*TKwreturn::parent=*/;
-  }
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AVardeclExpr].i]) return;
+  /* Register variable[1]: Method return value and escape marker */
+  return_label443: while(false);
+  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AVardeclExpr].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AReturnExpr___n_expr__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AReturnExpr::n_expr= (src/parser//parser_prod.nit:4718,5--4722:20)"};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  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*/) /*PExpr::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PExpr::parent=*/;
-  }
+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, 4900, LOCATE_parser_prod___AVardeclExpr___init_avardeclexpr};
+  val_t variable[8];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Local variable */
+  variable[2] =  param1;
+  /* Register variable[3]: Local variable */
+  variable[3] =  param2;
+  /* Register variable[4]: Local variable */
+  variable[4] =  param3;
+  /* Register variable[5]: Local variable */
+  variable[5] =  param4;
+  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AVardeclExpr].i]) return;
+  /* Register variable[6]: Method return value and escape marker */
+  CALL_parser_prod___AVardeclExpr___empty_init(variable[0])(variable[0], init_table /*YYY*/) /*AVardeclExpr::empty_init*/;
+  ATTR_parser_nodes___AVardeclExpr____n_kwvar(variable[0]) /*AVardeclExpr::_n_kwvar*/ =  variable[1] /*n_kwvar*/;
+  /* Register variable[7]: Result */
+  variable[7] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_kwvar*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_kwvar*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n_kwvar*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_kwvar*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n_kwvar*/)( variable[1] /*n_kwvar*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[7])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n_kwvar*/)( variable[1] /*n_kwvar*/, variable[0]) /*PNode::parent=*/;
+  }
+  ATTR_parser_nodes___AVardeclExpr____n_id(variable[0]) /*AVardeclExpr::_n_id*/ =  variable[2] /*n_id*/;
+  /* Register variable[7]: Result */
+  variable[7] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*n_id*/ ==  NIT_NULL /*null*/) || (( variable[2] /*n_id*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*n_id*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*n_id*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*n_id*/)( variable[2] /*n_id*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[7])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[2] /*n_id*/)( variable[2] /*n_id*/, variable[0]) /*PNode::parent=*/;
+  }
+  ATTR_parser_nodes___AVardeclExpr____n_type(variable[0]) /*AVardeclExpr::_n_type*/ =  variable[3] /*n_type*/;
+  /* Register variable[7]: Result */
+  variable[7] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[3] /*n_type*/ ==  NIT_NULL /*null*/) || (( variable[3] /*n_type*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[3] /*n_type*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[3] /*n_type*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[3] /*n_type*/)( variable[3] /*n_type*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[7])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[3] /*n_type*/)( variable[3] /*n_type*/, variable[0]) /*PNode::parent=*/;
+  }
+  ATTR_parser_nodes___AVardeclExpr____n_assign(variable[0]) /*AVardeclExpr::_n_assign*/ =  variable[4] /*n_assign*/;
+  /* Register variable[7]: Result */
+  variable[7] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[4] /*n_assign*/ ==  NIT_NULL /*null*/) || (( variable[4] /*n_assign*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[4] /*n_assign*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[4] /*n_assign*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[4] /*n_assign*/)( variable[4] /*n_assign*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[7])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[4] /*n_assign*/)( variable[4] /*n_assign*/, variable[0]) /*PNode::parent=*/;
+  }
+  ATTR_parser_nodes___AVardeclExpr____n_expr(variable[0]) /*AVardeclExpr::_n_expr*/ =  variable[5] /*n_expr*/;
+  /* Register variable[7]: Result */
+  variable[7] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[5] /*n_expr*/ ==  NIT_NULL /*null*/) || (( variable[5] /*n_expr*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[5] /*n_expr*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[5] /*n_expr*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[5] /*n_expr*/)( variable[5] /*n_expr*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[7])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[5] /*n_expr*/)( variable[5] /*n_expr*/, variable[0]) /*PNode::parent=*/;
+  }
+  return_label444: while(false);
+  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AVardeclExpr].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AReturnExpr___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, "parser_prod::AReturnExpr::empty_init (src/parser//parser_prod.nit:4726,5--27)"};
+void parser_prod___AReturnExpr___n_kwreturn__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 5025, LOCATE_parser_prod___AReturnExpr___n_kwreturn__eq};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AReturnExpr].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AReturnExpr].i] = 1;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  ATTR_parser_nodes___AReturnExpr____n_kwreturn(variable[0]) /*AReturnExpr::_n_kwreturn*/ =  variable[1] /*n*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[0]) /*PNode::parent=*/;
+  }
+  return_label445: while(false);
   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, "parser_prod::AReturnExpr::init_areturnexpr (src/parser//parser_prod.nit:4728,5--4739:22)"};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
+void parser_prod___AReturnExpr___n_expr__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 5032, LOCATE_parser_prod___AReturnExpr___n_expr__eq};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  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*/) /*TKwreturn::==*/)))))));
-  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) /*TKwreturn::parent=*/;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  ATTR_parser_nodes___AReturnExpr____n_expr(variable[0]) /*AReturnExpr::_n_expr*/ =  variable[1] /*n*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[0]) /*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*/) /*PExpr::==*/)))))));
-  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) /*PExpr::parent=*/;
-  }
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AReturnExpr].i] = 1;
+  return_label446: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AReturnExpr___replace_child(val_t  self, val_t  param0, val_t  param1) {
-  struct trace_t trace = {NULL, "parser_prod::AReturnExpr::replace_child (src/parser//parser_prod.nit:4743,5--4764:18)"};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  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*/) /*PNode::==*/)))))));
-  if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert failed: src/parser//parser_prod.nit:4745,9--32\n"); 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*/) /*TKwreturn::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*PNode::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_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 failed: src/parser//parser_prod.nit:4749,3--32\n"); 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_label414;
-  }
-  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*/) /*PExpr::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*PNode::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_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 failed: src/parser//parser_prod.nit:4759,3--28\n"); 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_label414;
+  struct trace_t trace = {NULL, NULL, 5058, LOCATE_parser_prod___AReturnExpr___replace_child};
+  val_t variable[5];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Local variable */
+  variable[2] =  param1;
+  /* Register variable[3]: Method return value and escape marker */
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AReturnExpr___replace_child, LOCATE_parser_prod, 5060); nit_exit(1);}
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___AReturnExpr____n_kwreturn(variable[0]) /*AReturnExpr::_n_kwreturn*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*PNode::parent=*/;
+      /* Register variable[4]: Result */
+      variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_TKwreturn, ID_TKwreturn)) /*cast TKwreturn*/;
+      if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AReturnExpr___replace_child, LOCATE_parser_prod, 5064); nit_exit(1);}
+      ATTR_parser_nodes___AReturnExpr____n_kwreturn(variable[0]) /*AReturnExpr::_n_kwreturn*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      ATTR_parser_nodes___AReturnExpr____n_kwreturn(variable[0]) /*AReturnExpr::_n_kwreturn*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label447;
+  }
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___AReturnExpr____n_expr(variable[0]) /*AReturnExpr::_n_expr*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*PNode::parent=*/;
+      /* Register variable[4]: Result */
+      variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
+      if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AReturnExpr___replace_child, LOCATE_parser_prod, 5074); nit_exit(1);}
+      ATTR_parser_nodes___AReturnExpr____n_expr(variable[0]) /*AReturnExpr::_n_expr*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      ATTR_parser_nodes___AReturnExpr____n_expr(variable[0]) /*AReturnExpr::_n_expr*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label447;
   }
-  return_label414: while(false);
+  return_label447: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AReturnExpr___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AReturnExpr::visit_all (src/parser//parser_prod.nit:4768,5--4774:27)"};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  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*/) /*TKwreturn::==*/)))))));
-  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*/) /*PExpr::==*/)))))));
-  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*/;
+  struct trace_t trace = {NULL, NULL, 5083, LOCATE_parser_prod___AReturnExpr___visit_all};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AReturnExpr____n_kwreturn(variable[0]) /*AReturnExpr::_n_kwreturn*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AReturnExpr____n_kwreturn(variable[0]) /*AReturnExpr::_n_kwreturn*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AReturnExpr____n_expr(variable[0]) /*AReturnExpr::_n_expr*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AReturnExpr____n_expr(variable[0]) /*AReturnExpr::_n_expr*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
+  return_label448: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AReturnExpr___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AReturnExpr::visit_all_reverse (src/parser//parser_prod.nit:4778,5--4784:27)"};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  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*/) /*TKwreturn::==*/)))))));
-  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*/) /*PExpr::==*/)))))));
-  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*/;
-  }
+  struct trace_t trace = {NULL, NULL, 5093, LOCATE_parser_prod___AReturnExpr___visit_all_reverse};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AReturnExpr____n_kwreturn(variable[0]) /*AReturnExpr::_n_kwreturn*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AReturnExpr____n_kwreturn(variable[0]) /*AReturnExpr::_n_kwreturn*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AReturnExpr____n_expr(variable[0]) /*AReturnExpr::_n_expr*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AReturnExpr____n_expr(variable[0]) /*AReturnExpr::_n_expr*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  return_label449: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___ABreakExpr___n_kwbreak__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::ABreakExpr::n_kwbreak= (src/parser//parser_prod.nit:4789,5--4793:20)"};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___AReturnExpr___empty_init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 5040, LOCATE_parser_prod___AReturnExpr___empty_init};
+  val_t variable[2];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  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*/) /*TKwbreak::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*TKwbreak::parent=*/;
-  }
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AReturnExpr].i]) return;
+  /* Register variable[1]: Method return value and escape marker */
+  return_label450: while(false);
+  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AReturnExpr].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser_prod___ABreakExpr___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, "parser_prod::ABreakExpr::empty_init (src/parser//parser_prod.nit:4797,5--27)"};
+void parser_prod___AReturnExpr___init_areturnexpr(val_t  self, val_t  param0, val_t  param1, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 5042, LOCATE_parser_prod___AReturnExpr___init_areturnexpr};
+  val_t variable[5];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Local variable */
+  variable[2] =  param1;
+  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AReturnExpr].i]) return;
+  /* Register variable[3]: Method return value and escape marker */
+  CALL_parser_prod___AReturnExpr___empty_init(variable[0])(variable[0], init_table /*YYY*/) /*AReturnExpr::empty_init*/;
+  ATTR_parser_nodes___AReturnExpr____n_kwreturn(variable[0]) /*AReturnExpr::_n_kwreturn*/ =  variable[1] /*n_kwreturn*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_kwreturn*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_kwreturn*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n_kwreturn*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_kwreturn*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n_kwreturn*/)( variable[1] /*n_kwreturn*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n_kwreturn*/)( variable[1] /*n_kwreturn*/, variable[0]) /*PNode::parent=*/;
+  }
+  ATTR_parser_nodes___AReturnExpr____n_expr(variable[0]) /*AReturnExpr::_n_expr*/ =  variable[2] /*n_expr*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*n_expr*/ ==  NIT_NULL /*null*/) || (( variable[2] /*n_expr*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*n_expr*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*n_expr*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*n_expr*/)( variable[2] /*n_expr*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[2] /*n_expr*/)( variable[2] /*n_expr*/, variable[0]) /*PNode::parent=*/;
+  }
+  return_label451: while(false);
+  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AReturnExpr].i] = 1;
+  tracehead = trace.prev;
+  return;
+}
+void parser_prod___ABreakExpr___n_kwbreak__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 5104, LOCATE_parser_prod___ABreakExpr___n_kwbreak__eq};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ABreakExpr].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ABreakExpr].i] = 1;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  ATTR_parser_nodes___ABreakExpr____n_kwbreak(variable[0]) /*ABreakExpr::_n_kwbreak*/ =  variable[1] /*n*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[0]) /*PNode::parent=*/;
+  }
+  return_label452: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___ABreakExpr___init_abreakexpr(val_t  self, val_t  param0, int* init_table) {
-  struct trace_t trace = {NULL, "parser_prod::ABreakExpr::init_abreakexpr (src/parser//parser_prod.nit:4799,5--4805:25)"};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___ABreakExpr___n_expr__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 5111, LOCATE_parser_prod___ABreakExpr___n_expr__eq};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  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*/) /*TKwbreak::==*/)))))));
-  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) /*TKwbreak::parent=*/;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  ATTR_parser_nodes___ABreakExpr____n_expr(variable[0]) /*ABreakExpr::_n_expr*/ =  variable[1] /*n*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[0]) /*PNode::parent=*/;
   }
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ABreakExpr].i] = 1;
+  return_label453: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___ABreakExpr___replace_child(val_t  self, val_t  param0, val_t  param1) {
-  struct trace_t trace = {NULL, "parser_prod::ABreakExpr::replace_child (src/parser//parser_prod.nit:4809,5--4820:18)"};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  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*/) /*PNode::==*/)))))));
-  if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert failed: src/parser//parser_prod.nit:4811,9--32\n"); 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*/) /*TKwbreak::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*PNode::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_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 failed: src/parser//parser_prod.nit:4815,3--31\n"); nit_exit(1);}
-      ATTR_parser_nodes___ABreakExpr____n_kwbreak( self) /*ABreakExpr::_n_kwbreak*/ =  variable1 /*new_child*/;
+  struct trace_t trace = {NULL, NULL, 5137, LOCATE_parser_prod___ABreakExpr___replace_child};
+  val_t variable[5];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Local variable */
+  variable[2] =  param1;
+  /* Register variable[3]: Method return value and escape marker */
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ABreakExpr___replace_child, LOCATE_parser_prod, 5139); nit_exit(1);}
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___ABreakExpr____n_kwbreak(variable[0]) /*ABreakExpr::_n_kwbreak*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*PNode::parent=*/;
+      /* Register variable[4]: Result */
+      variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_TKwbreak, ID_TKwbreak)) /*cast TKwbreak*/;
+      if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ABreakExpr___replace_child, LOCATE_parser_prod, 5143); nit_exit(1);}
+      ATTR_parser_nodes___ABreakExpr____n_kwbreak(variable[0]) /*ABreakExpr::_n_kwbreak*/ =  variable[2] /*new_child*/;
     } else { /*if*/
-      ATTR_parser_nodes___ABreakExpr____n_kwbreak( self) /*ABreakExpr::_n_kwbreak*/ =  NIT_NULL /*null*/;
+      ATTR_parser_nodes___ABreakExpr____n_kwbreak(variable[0]) /*ABreakExpr::_n_kwbreak*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label454;
+  }
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___ABreakExpr____n_expr(variable[0]) /*ABreakExpr::_n_expr*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*PNode::parent=*/;
+      /* Register variable[4]: Result */
+      variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
+      if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ABreakExpr___replace_child, LOCATE_parser_prod, 5153); nit_exit(1);}
+      ATTR_parser_nodes___ABreakExpr____n_expr(variable[0]) /*ABreakExpr::_n_expr*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      ATTR_parser_nodes___ABreakExpr____n_expr(variable[0]) /*ABreakExpr::_n_expr*/ =  NIT_NULL /*null*/;
     }
-    goto return_label420;
+    goto return_label454;
   }
-  return_label420: while(false);
+  return_label454: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___ABreakExpr___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::ABreakExpr::visit_all (src/parser//parser_prod.nit:4824,5--4827:30)"};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  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*/) /*TKwbreak::==*/)))))));
-  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*/;
-  }
+  struct trace_t trace = {NULL, NULL, 5162, LOCATE_parser_prod___ABreakExpr___visit_all};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___ABreakExpr____n_kwbreak(variable[0]) /*ABreakExpr::_n_kwbreak*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___ABreakExpr____n_kwbreak(variable[0]) /*ABreakExpr::_n_kwbreak*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___ABreakExpr____n_expr(variable[0]) /*ABreakExpr::_n_expr*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___ABreakExpr____n_expr(variable[0]) /*ABreakExpr::_n_expr*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  return_label455: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___ABreakExpr___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::ABreakExpr::visit_all_reverse (src/parser//parser_prod.nit:4831,5--4834:30)"};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  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*/) /*TKwbreak::==*/)))))));
-  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, "parser_prod::AAbortExpr::n_kwabort= (src/parser//parser_prod.nit:4839,5--4843:20)"};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  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*/) /*TKwabort::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*TKwabort::parent=*/;
-  }
+  struct trace_t trace = {NULL, NULL, 5172, LOCATE_parser_prod___ABreakExpr___visit_all_reverse};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___ABreakExpr____n_kwbreak(variable[0]) /*ABreakExpr::_n_kwbreak*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___ABreakExpr____n_kwbreak(variable[0]) /*ABreakExpr::_n_kwbreak*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___ABreakExpr____n_expr(variable[0]) /*ABreakExpr::_n_expr*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___ABreakExpr____n_expr(variable[0]) /*ABreakExpr::_n_expr*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  return_label456: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AAbortExpr___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, "parser_prod::AAbortExpr::empty_init (src/parser//parser_prod.nit:4847,5--27)"};
-  trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AAbortExpr].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AAbortExpr].i] = 1;
+void parser_prod___ABreakExpr___empty_init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 5119, LOCATE_parser_prod___ABreakExpr___empty_init};
+  val_t variable[2];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ABreakExpr].i]) return;
+  /* Register variable[1]: Method return value and escape marker */
+  return_label457: while(false);
+  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ABreakExpr].i] = 1;
+  tracehead = trace.prev;
+  return;
+}
+void parser_prod___ABreakExpr___init_abreakexpr(val_t  self, val_t  param0, val_t  param1, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 5121, LOCATE_parser_prod___ABreakExpr___init_abreakexpr};
+  val_t variable[5];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Local variable */
+  variable[2] =  param1;
+  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ABreakExpr].i]) return;
+  /* Register variable[3]: Method return value and escape marker */
+  CALL_parser_prod___ABreakExpr___empty_init(variable[0])(variable[0], init_table /*YYY*/) /*ABreakExpr::empty_init*/;
+  ATTR_parser_nodes___ABreakExpr____n_kwbreak(variable[0]) /*ABreakExpr::_n_kwbreak*/ =  variable[1] /*n_kwbreak*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_kwbreak*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_kwbreak*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n_kwbreak*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_kwbreak*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n_kwbreak*/)( variable[1] /*n_kwbreak*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n_kwbreak*/)( variable[1] /*n_kwbreak*/, variable[0]) /*PNode::parent=*/;
+  }
+  ATTR_parser_nodes___ABreakExpr____n_expr(variable[0]) /*ABreakExpr::_n_expr*/ =  variable[2] /*n_expr*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*n_expr*/ ==  NIT_NULL /*null*/) || (( variable[2] /*n_expr*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*n_expr*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*n_expr*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*n_expr*/)( variable[2] /*n_expr*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[2] /*n_expr*/)( variable[2] /*n_expr*/, variable[0]) /*PNode::parent=*/;
+  }
+  return_label458: while(false);
+  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ABreakExpr].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, "parser_prod::AAbortExpr::init_aabortexpr (src/parser//parser_prod.nit:4849,5--4855:25)"};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  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*/) /*TKwabort::==*/)))))));
-  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) /*TKwabort::parent=*/;
+void parser_prod___AAbortExpr___n_kwabort__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 5183, LOCATE_parser_prod___AAbortExpr___n_kwabort__eq};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  ATTR_parser_nodes___AAbortExpr____n_kwabort(variable[0]) /*AAbortExpr::_n_kwabort*/ =  variable[1] /*n*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[0]) /*PNode::parent=*/;
   }
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AAbortExpr].i] = 1;
+  return_label459: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AAbortExpr___replace_child(val_t  self, val_t  param0, val_t  param1) {
-  struct trace_t trace = {NULL, "parser_prod::AAbortExpr::replace_child (src/parser//parser_prod.nit:4859,5--4870:18)"};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  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*/) /*PNode::==*/)))))));
-  if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert failed: src/parser//parser_prod.nit:4861,9--32\n"); 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*/) /*TKwabort::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*PNode::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_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 failed: src/parser//parser_prod.nit:4865,3--31\n"); 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_label426;
+  struct trace_t trace = {NULL, NULL, 5204, LOCATE_parser_prod___AAbortExpr___replace_child};
+  val_t variable[5];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Local variable */
+  variable[2] =  param1;
+  /* Register variable[3]: Method return value and escape marker */
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AAbortExpr___replace_child, LOCATE_parser_prod, 5206); nit_exit(1);}
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___AAbortExpr____n_kwabort(variable[0]) /*AAbortExpr::_n_kwabort*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*PNode::parent=*/;
+      /* Register variable[4]: Result */
+      variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_TKwabort, ID_TKwabort)) /*cast TKwabort*/;
+      if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AAbortExpr___replace_child, LOCATE_parser_prod, 5210); nit_exit(1);}
+      ATTR_parser_nodes___AAbortExpr____n_kwabort(variable[0]) /*AAbortExpr::_n_kwabort*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      ATTR_parser_nodes___AAbortExpr____n_kwabort(variable[0]) /*AAbortExpr::_n_kwabort*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label460;
   }
-  return_label426: while(false);
+  return_label460: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AAbortExpr___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AAbortExpr::visit_all (src/parser//parser_prod.nit:4874,5--4877:30)"};
-  val_t variable0;
-  val_t variable1;
+  struct trace_t trace = {NULL, NULL, 5219, LOCATE_parser_prod___AAbortExpr___visit_all};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  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*/) /*TKwabort::==*/)))))));
-  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*/;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AAbortExpr____n_kwabort(variable[0]) /*AAbortExpr::_n_kwabort*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AAbortExpr____n_kwabort(variable[0]) /*AAbortExpr::_n_kwabort*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
+  return_label461: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AAbortExpr___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AAbortExpr::visit_all_reverse (src/parser//parser_prod.nit:4881,5--4884:30)"};
-  val_t variable0;
-  val_t variable1;
+  struct trace_t trace = {NULL, NULL, 5226, LOCATE_parser_prod___AAbortExpr___visit_all_reverse};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  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*/) /*TKwabort::==*/)))))));
-  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*/;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AAbortExpr____n_kwabort(variable[0]) /*AAbortExpr::_n_kwabort*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AAbortExpr____n_kwabort(variable[0]) /*AAbortExpr::_n_kwabort*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
+  return_label462: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AContinueExpr___n_kwcontinue__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AContinueExpr::n_kwcontinue= (src/parser//parser_prod.nit:4889,5--4893:20)"};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___AAbortExpr___empty_init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 5191, LOCATE_parser_prod___AAbortExpr___empty_init};
+  val_t variable[2];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AAbortExpr].i]) return;
+  /* Register variable[1]: Method return value and escape marker */
+  return_label463: while(false);
+  init_table[VAL2OBJ(variable[0])->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, 5193, LOCATE_parser_prod___AAbortExpr___init_aabortexpr};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  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*/) /*TKwcontinue::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*TKwcontinue::parent=*/;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AAbortExpr].i]) return;
+  /* Register variable[2]: Method return value and escape marker */
+  CALL_parser_prod___AAbortExpr___empty_init(variable[0])(variable[0], init_table /*YYY*/) /*AAbortExpr::empty_init*/;
+  ATTR_parser_nodes___AAbortExpr____n_kwabort(variable[0]) /*AAbortExpr::_n_kwabort*/ =  variable[1] /*n_kwabort*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_kwabort*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_kwabort*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n_kwabort*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_kwabort*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n_kwabort*/)( variable[1] /*n_kwabort*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n_kwabort*/)( variable[1] /*n_kwabort*/, variable[0]) /*PNode::parent=*/;
   }
+  return_label464: while(false);
+  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AAbortExpr].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AContinueExpr___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, "parser_prod::AContinueExpr::empty_init (src/parser//parser_prod.nit:4897,5--27)"};
+void parser_prod___AContinueExpr___n_kwcontinue__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 5234, LOCATE_parser_prod___AContinueExpr___n_kwcontinue__eq};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AContinueExpr].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AContinueExpr].i] = 1;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  ATTR_parser_nodes___AContinueExpr____n_kwcontinue(variable[0]) /*AContinueExpr::_n_kwcontinue*/ =  variable[1] /*n*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[0]) /*PNode::parent=*/;
+  }
+  return_label465: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AContinueExpr___init_acontinueexpr(val_t  self, val_t  param0, int* init_table) {
-  struct trace_t trace = {NULL, "parser_prod::AContinueExpr::init_acontinueexpr (src/parser//parser_prod.nit:4899,5--4905:28)"};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___AContinueExpr___n_expr__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 5241, LOCATE_parser_prod___AContinueExpr___n_expr__eq};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  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*/) /*TKwcontinue::==*/)))))));
-  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) /*TKwcontinue::parent=*/;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  ATTR_parser_nodes___AContinueExpr____n_expr(variable[0]) /*AContinueExpr::_n_expr*/ =  variable[1] /*n*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[0]) /*PNode::parent=*/;
   }
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AContinueExpr].i] = 1;
+  return_label466: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AContinueExpr___replace_child(val_t  self, val_t  param0, val_t  param1) {
-  struct trace_t trace = {NULL, "parser_prod::AContinueExpr::replace_child (src/parser//parser_prod.nit:4909,5--4920:18)"};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  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*/) /*PNode::==*/)))))));
-  if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert failed: src/parser//parser_prod.nit:4911,9--32\n"); 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*/) /*TKwcontinue::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*PNode::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_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 failed: src/parser//parser_prod.nit:4915,3--34\n"); 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_label432;
+  struct trace_t trace = {NULL, NULL, 5267, LOCATE_parser_prod___AContinueExpr___replace_child};
+  val_t variable[5];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Local variable */
+  variable[2] =  param1;
+  /* Register variable[3]: Method return value and escape marker */
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AContinueExpr___replace_child, LOCATE_parser_prod, 5269); nit_exit(1);}
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___AContinueExpr____n_kwcontinue(variable[0]) /*AContinueExpr::_n_kwcontinue*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*PNode::parent=*/;
+      /* Register variable[4]: Result */
+      variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_TKwcontinue, ID_TKwcontinue)) /*cast TKwcontinue*/;
+      if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AContinueExpr___replace_child, LOCATE_parser_prod, 5273); nit_exit(1);}
+      ATTR_parser_nodes___AContinueExpr____n_kwcontinue(variable[0]) /*AContinueExpr::_n_kwcontinue*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      ATTR_parser_nodes___AContinueExpr____n_kwcontinue(variable[0]) /*AContinueExpr::_n_kwcontinue*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label467;
+  }
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___AContinueExpr____n_expr(variable[0]) /*AContinueExpr::_n_expr*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*PNode::parent=*/;
+      /* Register variable[4]: Result */
+      variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
+      if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AContinueExpr___replace_child, LOCATE_parser_prod, 5283); nit_exit(1);}
+      ATTR_parser_nodes___AContinueExpr____n_expr(variable[0]) /*AContinueExpr::_n_expr*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      ATTR_parser_nodes___AContinueExpr____n_expr(variable[0]) /*AContinueExpr::_n_expr*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label467;
   }
-  return_label432: while(false);
+  return_label467: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AContinueExpr___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AContinueExpr::visit_all (src/parser//parser_prod.nit:4924,5--4927:33)"};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  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*/) /*TKwcontinue::==*/)))))));
-  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*/;
+  struct trace_t trace = {NULL, NULL, 5292, LOCATE_parser_prod___AContinueExpr___visit_all};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AContinueExpr____n_kwcontinue(variable[0]) /*AContinueExpr::_n_kwcontinue*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AContinueExpr____n_kwcontinue(variable[0]) /*AContinueExpr::_n_kwcontinue*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AContinueExpr____n_expr(variable[0]) /*AContinueExpr::_n_expr*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AContinueExpr____n_expr(variable[0]) /*AContinueExpr::_n_expr*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
+  return_label468: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AContinueExpr___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AContinueExpr::visit_all_reverse (src/parser//parser_prod.nit:4931,5--4934:33)"};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  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*/) /*TKwcontinue::==*/)))))));
-  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*/;
-  }
+  struct trace_t trace = {NULL, NULL, 5302, LOCATE_parser_prod___AContinueExpr___visit_all_reverse};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AContinueExpr____n_kwcontinue(variable[0]) /*AContinueExpr::_n_kwcontinue*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AContinueExpr____n_kwcontinue(variable[0]) /*AContinueExpr::_n_kwcontinue*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AContinueExpr____n_expr(variable[0]) /*AContinueExpr::_n_expr*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AContinueExpr____n_expr(variable[0]) /*AContinueExpr::_n_expr*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  return_label469: while(false);
+  tracehead = trace.prev;
+  return;
+}
+void parser_prod___AContinueExpr___empty_init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 5249, LOCATE_parser_prod___AContinueExpr___empty_init};
+  val_t variable[2];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AContinueExpr].i]) return;
+  /* Register variable[1]: Method return value and escape marker */
+  return_label470: while(false);
+  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AContinueExpr].i] = 1;
+  tracehead = trace.prev;
+  return;
+}
+void parser_prod___AContinueExpr___init_acontinueexpr(val_t  self, val_t  param0, val_t  param1, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 5251, LOCATE_parser_prod___AContinueExpr___init_acontinueexpr};
+  val_t variable[5];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Local variable */
+  variable[2] =  param1;
+  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AContinueExpr].i]) return;
+  /* Register variable[3]: Method return value and escape marker */
+  CALL_parser_prod___AContinueExpr___empty_init(variable[0])(variable[0], init_table /*YYY*/) /*AContinueExpr::empty_init*/;
+  ATTR_parser_nodes___AContinueExpr____n_kwcontinue(variable[0]) /*AContinueExpr::_n_kwcontinue*/ =  variable[1] /*n_kwcontinue*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_kwcontinue*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_kwcontinue*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n_kwcontinue*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_kwcontinue*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n_kwcontinue*/)( variable[1] /*n_kwcontinue*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n_kwcontinue*/)( variable[1] /*n_kwcontinue*/, variable[0]) /*PNode::parent=*/;
+  }
+  ATTR_parser_nodes___AContinueExpr____n_expr(variable[0]) /*AContinueExpr::_n_expr*/ =  variable[2] /*n_expr*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*n_expr*/ ==  NIT_NULL /*null*/) || (( variable[2] /*n_expr*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*n_expr*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*n_expr*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*n_expr*/)( variable[2] /*n_expr*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[2] /*n_expr*/)( variable[2] /*n_expr*/, variable[0]) /*PNode::parent=*/;
+  }
+  return_label471: while(false);
+  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AContinueExpr].i] = 1;
   tracehead = trace.prev;
   return;
 }
 void parser_prod___ADoExpr___n_kwdo__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::ADoExpr::n_kwdo= (src/parser//parser_prod.nit:4939,5--4943:20)"};
-  val_t variable0;
-  val_t variable1;
+  struct trace_t trace = {NULL, NULL, 5313, LOCATE_parser_prod___ADoExpr___n_kwdo__eq};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  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*/) /*TKwdo::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*TKwdo::parent=*/;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  ATTR_parser_nodes___ADoExpr____n_kwdo(variable[0]) /*ADoExpr::_n_kwdo*/ =  variable[1] /*n*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[0]) /*PNode::parent=*/;
   }
+  return_label472: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___ADoExpr___n_block__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::ADoExpr::n_block= (src/parser//parser_prod.nit:4946,5--4950:20)"};
-  val_t variable0;
-  val_t variable1;
+  struct trace_t trace = {NULL, NULL, 5320, LOCATE_parser_prod___ADoExpr___n_block__eq};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  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*/) /*PExpr::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PExpr::parent=*/;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  ATTR_parser_nodes___ADoExpr____n_block(variable[0]) /*ADoExpr::_n_block*/ =  variable[1] /*n*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[0]) /*PNode::parent=*/;
   }
+  return_label473: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___ADoExpr___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, "parser_prod::ADoExpr::empty_init (src/parser//parser_prod.nit:4954,5--27)"};
-  trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ADoExpr].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ADoExpr].i] = 1;
+void parser_prod___ADoExpr___replace_child(val_t  self, val_t  param0, val_t  param1) {
+  struct trace_t trace = {NULL, NULL, 5346, LOCATE_parser_prod___ADoExpr___replace_child};
+  val_t variable[5];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Local variable */
+  variable[2] =  param1;
+  /* Register variable[3]: Method return value and escape marker */
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ADoExpr___replace_child, LOCATE_parser_prod, 5348); nit_exit(1);}
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___ADoExpr____n_kwdo(variable[0]) /*ADoExpr::_n_kwdo*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*PNode::parent=*/;
+      /* Register variable[4]: Result */
+      variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_TKwdo, ID_TKwdo)) /*cast TKwdo*/;
+      if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ADoExpr___replace_child, LOCATE_parser_prod, 5352); nit_exit(1);}
+      ATTR_parser_nodes___ADoExpr____n_kwdo(variable[0]) /*ADoExpr::_n_kwdo*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      ATTR_parser_nodes___ADoExpr____n_kwdo(variable[0]) /*ADoExpr::_n_kwdo*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label474;
+  }
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___ADoExpr____n_block(variable[0]) /*ADoExpr::_n_block*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*PNode::parent=*/;
+      /* Register variable[4]: Result */
+      variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
+      if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ADoExpr___replace_child, LOCATE_parser_prod, 5362); nit_exit(1);}
+      ATTR_parser_nodes___ADoExpr____n_block(variable[0]) /*ADoExpr::_n_block*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      ATTR_parser_nodes___ADoExpr____n_block(variable[0]) /*ADoExpr::_n_block*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label474;
+  }
+  return_label474: while(false);
   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, "parser_prod::ADoExpr::init_adoexpr (src/parser//parser_prod.nit:4956,5--4967:23)"};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  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*/) /*TKwdo::==*/)))))));
-  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) /*TKwdo::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*/) /*PExpr::==*/)))))));
-  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) /*PExpr::parent=*/;
-  }
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ADoExpr].i] = 1;
+void parser_prod___ADoExpr___visit_all(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 5371, LOCATE_parser_prod___ADoExpr___visit_all};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___ADoExpr____n_kwdo(variable[0]) /*ADoExpr::_n_kwdo*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___ADoExpr____n_kwdo(variable[0]) /*ADoExpr::_n_kwdo*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___ADoExpr____n_block(variable[0]) /*ADoExpr::_n_block*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___ADoExpr____n_block(variable[0]) /*ADoExpr::_n_block*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  return_label475: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___ADoExpr___replace_child(val_t  self, val_t  param0, val_t  param1) {
-  struct trace_t trace = {NULL, "parser_prod::ADoExpr::replace_child (src/parser//parser_prod.nit:4971,5--4992:18)"};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  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*/) /*PNode::==*/)))))));
-  if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert failed: src/parser//parser_prod.nit:4973,9--32\n"); 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*/) /*TKwdo::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*PNode::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_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 failed: src/parser//parser_prod.nit:4977,3--28\n"); 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_label439;
-  }
-  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*/) /*PExpr::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*PNode::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_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 failed: src/parser//parser_prod.nit:4987,3--28\n"); 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_label439;
+void parser_prod___ADoExpr___visit_all_reverse(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 5381, LOCATE_parser_prod___ADoExpr___visit_all_reverse};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___ADoExpr____n_kwdo(variable[0]) /*ADoExpr::_n_kwdo*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___ADoExpr____n_kwdo(variable[0]) /*ADoExpr::_n_kwdo*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___ADoExpr____n_block(variable[0]) /*ADoExpr::_n_block*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___ADoExpr____n_block(variable[0]) /*ADoExpr::_n_block*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
-  return_label439: while(false);
+  return_label476: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___ADoExpr___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::ADoExpr::visit_all (src/parser//parser_prod.nit:4996,5--5002:28)"};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___ADoExpr___empty_init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 5328, LOCATE_parser_prod___ADoExpr___empty_init};
+  val_t variable[2];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  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*/) /*TKwdo::==*/)))))));
-  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*/) /*PExpr::==*/)))))));
-  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*/;
-  }
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ADoExpr].i]) return;
+  /* Register variable[1]: Method return value and escape marker */
+  return_label477: while(false);
+  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ADoExpr].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser_prod___ADoExpr___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::ADoExpr::visit_all_reverse (src/parser//parser_prod.nit:5006,5--5012:28)"};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  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*/) /*TKwdo::==*/)))))));
-  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*/) /*PExpr::==*/)))))));
-  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*/;
-  }
+void parser_prod___ADoExpr___init_adoexpr(val_t  self, val_t  param0, val_t  param1, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 5330, LOCATE_parser_prod___ADoExpr___init_adoexpr};
+  val_t variable[5];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Local variable */
+  variable[2] =  param1;
+  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ADoExpr].i]) return;
+  /* Register variable[3]: Method return value and escape marker */
+  CALL_parser_prod___ADoExpr___empty_init(variable[0])(variable[0], init_table /*YYY*/) /*ADoExpr::empty_init*/;
+  ATTR_parser_nodes___ADoExpr____n_kwdo(variable[0]) /*ADoExpr::_n_kwdo*/ =  variable[1] /*n_kwdo*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_kwdo*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_kwdo*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n_kwdo*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_kwdo*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n_kwdo*/)( variable[1] /*n_kwdo*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n_kwdo*/)( variable[1] /*n_kwdo*/, variable[0]) /*PNode::parent=*/;
+  }
+  ATTR_parser_nodes___ADoExpr____n_block(variable[0]) /*ADoExpr::_n_block*/ =  variable[2] /*n_block*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*n_block*/ ==  NIT_NULL /*null*/) || (( variable[2] /*n_block*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*n_block*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*n_block*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*n_block*/)( variable[2] /*n_block*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[2] /*n_block*/)( variable[2] /*n_block*/, variable[0]) /*PNode::parent=*/;
+  }
+  return_label478: while(false);
+  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ADoExpr].i] = 1;
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AIfExpr___n_kwif__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AIfExpr::n_kwif= (src/parser//parser_prod.nit:5017,5--5021:20)"};
-  val_t variable0;
-  val_t variable1;
+  struct trace_t trace = {NULL, NULL, 5392, LOCATE_parser_prod___AIfExpr___n_kwif__eq};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  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*/) /*TKwif::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*TKwif::parent=*/;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  ATTR_parser_nodes___AIfExpr____n_kwif(variable[0]) /*AIfExpr::_n_kwif*/ =  variable[1] /*n*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[0]) /*PNode::parent=*/;
   }
+  return_label479: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AIfExpr___n_expr__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AIfExpr::n_expr= (src/parser//parser_prod.nit:5024,5--5028:20)"};
-  val_t variable0;
-  val_t variable1;
+  struct trace_t trace = {NULL, NULL, 5399, LOCATE_parser_prod___AIfExpr___n_expr__eq};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  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*/) /*PExpr::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PExpr::parent=*/;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  ATTR_parser_nodes___AIfExpr____n_expr(variable[0]) /*AIfExpr::_n_expr*/ =  variable[1] /*n*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[0]) /*PNode::parent=*/;
   }
+  return_label480: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AIfExpr___n_then__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AIfExpr::n_then= (src/parser//parser_prod.nit:5031,5--5035:20)"};
-  val_t variable0;
-  val_t variable1;
+  struct trace_t trace = {NULL, NULL, 5406, LOCATE_parser_prod___AIfExpr___n_then__eq};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  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*/) /*PExpr::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PExpr::parent=*/;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  ATTR_parser_nodes___AIfExpr____n_then(variable[0]) /*AIfExpr::_n_then*/ =  variable[1] /*n*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[0]) /*PNode::parent=*/;
   }
+  return_label481: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AIfExpr___n_else__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AIfExpr::n_else= (src/parser//parser_prod.nit:5038,5--5042:20)"};
-  val_t variable0;
-  val_t variable1;
+  struct trace_t trace = {NULL, NULL, 5413, LOCATE_parser_prod___AIfExpr___n_else__eq};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  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*/) /*PExpr::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PExpr::parent=*/;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  ATTR_parser_nodes___AIfExpr____n_else(variable[0]) /*AIfExpr::_n_else*/ =  variable[1] /*n*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[0]) /*PNode::parent=*/;
   }
+  return_label482: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AIfExpr___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, "parser_prod::AIfExpr::empty_init (src/parser//parser_prod.nit:5046,5--27)"};
-  trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AIfExpr].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AIfExpr].i] = 1;
+void parser_prod___AIfExpr___replace_child(val_t  self, val_t  param0, val_t  param1) {
+  struct trace_t trace = {NULL, NULL, 5449, LOCATE_parser_prod___AIfExpr___replace_child};
+  val_t variable[5];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Local variable */
+  variable[2] =  param1;
+  /* Register variable[3]: Method return value and escape marker */
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AIfExpr___replace_child, LOCATE_parser_prod, 5451); nit_exit(1);}
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___AIfExpr____n_kwif(variable[0]) /*AIfExpr::_n_kwif*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*PNode::parent=*/;
+      /* Register variable[4]: Result */
+      variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_TKwif, ID_TKwif)) /*cast TKwif*/;
+      if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AIfExpr___replace_child, LOCATE_parser_prod, 5455); nit_exit(1);}
+      ATTR_parser_nodes___AIfExpr____n_kwif(variable[0]) /*AIfExpr::_n_kwif*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      ATTR_parser_nodes___AIfExpr____n_kwif(variable[0]) /*AIfExpr::_n_kwif*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label483;
+  }
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___AIfExpr____n_expr(variable[0]) /*AIfExpr::_n_expr*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*PNode::parent=*/;
+      /* Register variable[4]: Result */
+      variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
+      if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AIfExpr___replace_child, LOCATE_parser_prod, 5465); nit_exit(1);}
+      ATTR_parser_nodes___AIfExpr____n_expr(variable[0]) /*AIfExpr::_n_expr*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      ATTR_parser_nodes___AIfExpr____n_expr(variable[0]) /*AIfExpr::_n_expr*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label483;
+  }
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___AIfExpr____n_then(variable[0]) /*AIfExpr::_n_then*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*PNode::parent=*/;
+      /* Register variable[4]: Result */
+      variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
+      if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AIfExpr___replace_child, LOCATE_parser_prod, 5475); nit_exit(1);}
+      ATTR_parser_nodes___AIfExpr____n_then(variable[0]) /*AIfExpr::_n_then*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      ATTR_parser_nodes___AIfExpr____n_then(variable[0]) /*AIfExpr::_n_then*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label483;
+  }
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___AIfExpr____n_else(variable[0]) /*AIfExpr::_n_else*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*PNode::parent=*/;
+      /* Register variable[4]: Result */
+      variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
+      if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AIfExpr___replace_child, LOCATE_parser_prod, 5485); nit_exit(1);}
+      ATTR_parser_nodes___AIfExpr____n_else(variable[0]) /*AIfExpr::_n_else*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      ATTR_parser_nodes___AIfExpr____n_else(variable[0]) /*AIfExpr::_n_else*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label483;
+  }
+  return_label483: while(false);
   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, "parser_prod::AIfExpr::init_aifexpr (src/parser//parser_prod.nit:5048,5--5069:22)"};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  val_t variable3;
-  val_t variable4;
-  trace.prev = tracehead; tracehead = &trace;
-  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*/) /*TKwif::==*/)))))));
-  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) /*TKwif::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*/) /*PExpr::==*/)))))));
-  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) /*PExpr::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*/) /*PExpr::==*/)))))));
-  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) /*PExpr::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*/) /*PExpr::==*/)))))));
-  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) /*PExpr::parent=*/;
-  }
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AIfExpr].i] = 1;
+void parser_prod___AIfExpr___visit_all(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 5494, LOCATE_parser_prod___AIfExpr___visit_all};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AIfExpr____n_kwif(variable[0]) /*AIfExpr::_n_kwif*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AIfExpr____n_kwif(variable[0]) /*AIfExpr::_n_kwif*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AIfExpr____n_expr(variable[0]) /*AIfExpr::_n_expr*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AIfExpr____n_expr(variable[0]) /*AIfExpr::_n_expr*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AIfExpr____n_then(variable[0]) /*AIfExpr::_n_then*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AIfExpr____n_then(variable[0]) /*AIfExpr::_n_then*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AIfExpr____n_else(variable[0]) /*AIfExpr::_n_else*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AIfExpr____n_else(variable[0]) /*AIfExpr::_n_else*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  return_label484: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AIfExpr___replace_child(val_t  self, val_t  param0, val_t  param1) {
-  struct trace_t trace = {NULL, "parser_prod::AIfExpr::replace_child (src/parser//parser_prod.nit:5073,5--5114:18)"};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  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*/) /*PNode::==*/)))))));
-  if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert failed: src/parser//parser_prod.nit:5075,9--32\n"); 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*/) /*TKwif::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*PNode::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_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 failed: src/parser//parser_prod.nit:5079,3--28\n"); 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_label448;
-  }
-  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*/) /*PExpr::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*PNode::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_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 failed: src/parser//parser_prod.nit:5089,3--28\n"); 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_label448;
-  }
-  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*/) /*PExpr::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*PNode::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_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 failed: src/parser//parser_prod.nit:5099,3--28\n"); 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_label448;
-  }
-  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*/) /*PExpr::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*PNode::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_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 failed: src/parser//parser_prod.nit:5109,3--28\n"); 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_label448;
-  }
-  return_label448: while(false);
+void parser_prod___AIfExpr___visit_all_reverse(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 5510, LOCATE_parser_prod___AIfExpr___visit_all_reverse};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AIfExpr____n_kwif(variable[0]) /*AIfExpr::_n_kwif*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AIfExpr____n_kwif(variable[0]) /*AIfExpr::_n_kwif*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AIfExpr____n_expr(variable[0]) /*AIfExpr::_n_expr*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AIfExpr____n_expr(variable[0]) /*AIfExpr::_n_expr*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AIfExpr____n_then(variable[0]) /*AIfExpr::_n_then*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AIfExpr____n_then(variable[0]) /*AIfExpr::_n_then*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AIfExpr____n_else(variable[0]) /*AIfExpr::_n_else*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AIfExpr____n_else(variable[0]) /*AIfExpr::_n_else*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  return_label485: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AIfExpr___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AIfExpr::visit_all (src/parser//parser_prod.nit:5118,5--5130:27)"};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___AIfExpr___empty_init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 5421, LOCATE_parser_prod___AIfExpr___empty_init};
+  val_t variable[2];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  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*/) /*TKwif::==*/)))))));
-  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*/) /*PExpr::==*/)))))));
-  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*/) /*PExpr::==*/)))))));
-  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*/) /*PExpr::==*/)))))));
-  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*/;
-  }
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AIfExpr].i]) return;
+  /* Register variable[1]: Method return value and escape marker */
+  return_label486: while(false);
+  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AIfExpr].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AIfExpr___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AIfExpr::visit_all_reverse (src/parser//parser_prod.nit:5134,5--5146:27)"};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  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*/) /*TKwif::==*/)))))));
-  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*/) /*PExpr::==*/)))))));
-  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*/) /*PExpr::==*/)))))));
-  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*/) /*PExpr::==*/)))))));
-  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*/;
-  }
+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, 5423, LOCATE_parser_prod___AIfExpr___init_aifexpr};
+  val_t variable[7];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Local variable */
+  variable[2] =  param1;
+  /* Register variable[3]: Local variable */
+  variable[3] =  param2;
+  /* Register variable[4]: Local variable */
+  variable[4] =  param3;
+  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AIfExpr].i]) return;
+  /* Register variable[5]: Method return value and escape marker */
+  CALL_parser_prod___AIfExpr___empty_init(variable[0])(variable[0], init_table /*YYY*/) /*AIfExpr::empty_init*/;
+  ATTR_parser_nodes___AIfExpr____n_kwif(variable[0]) /*AIfExpr::_n_kwif*/ =  variable[1] /*n_kwif*/;
+  /* Register variable[6]: Result */
+  variable[6] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_kwif*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_kwif*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n_kwif*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_kwif*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n_kwif*/)( variable[1] /*n_kwif*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[6])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n_kwif*/)( variable[1] /*n_kwif*/, variable[0]) /*PNode::parent=*/;
+  }
+  ATTR_parser_nodes___AIfExpr____n_expr(variable[0]) /*AIfExpr::_n_expr*/ =  variable[2] /*n_expr*/;
+  /* Register variable[6]: Result */
+  variable[6] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*n_expr*/ ==  NIT_NULL /*null*/) || (( variable[2] /*n_expr*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*n_expr*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*n_expr*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*n_expr*/)( variable[2] /*n_expr*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[6])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[2] /*n_expr*/)( variable[2] /*n_expr*/, variable[0]) /*PNode::parent=*/;
+  }
+  ATTR_parser_nodes___AIfExpr____n_then(variable[0]) /*AIfExpr::_n_then*/ =  variable[3] /*n_then*/;
+  /* Register variable[6]: Result */
+  variable[6] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[3] /*n_then*/ ==  NIT_NULL /*null*/) || (( variable[3] /*n_then*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[3] /*n_then*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[3] /*n_then*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[3] /*n_then*/)( variable[3] /*n_then*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[6])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[3] /*n_then*/)( variable[3] /*n_then*/, variable[0]) /*PNode::parent=*/;
+  }
+  ATTR_parser_nodes___AIfExpr____n_else(variable[0]) /*AIfExpr::_n_else*/ =  variable[4] /*n_else*/;
+  /* Register variable[6]: Result */
+  variable[6] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[4] /*n_else*/ ==  NIT_NULL /*null*/) || (( variable[4] /*n_else*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[4] /*n_else*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[4] /*n_else*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[4] /*n_else*/)( variable[4] /*n_else*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[6])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[4] /*n_else*/)( variable[4] /*n_else*/, variable[0]) /*PNode::parent=*/;
+  }
+  return_label487: while(false);
+  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AIfExpr].i] = 1;
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AIfexprExpr___n_kwif__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AIfexprExpr::n_kwif= (src/parser//parser_prod.nit:5151,5--5155:20)"};
-  val_t variable0;
-  val_t variable1;
+  struct trace_t trace = {NULL, NULL, 5527, LOCATE_parser_prod___AIfexprExpr___n_kwif__eq};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  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*/) /*TKwif::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*TKwif::parent=*/;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  ATTR_parser_nodes___AIfexprExpr____n_kwif(variable[0]) /*AIfexprExpr::_n_kwif*/ =  variable[1] /*n*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[0]) /*PNode::parent=*/;
   }
+  return_label488: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AIfexprExpr___n_expr__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AIfexprExpr::n_expr= (src/parser//parser_prod.nit:5158,5--5162:20)"};
-  val_t variable0;
-  val_t variable1;
+  struct trace_t trace = {NULL, NULL, 5534, LOCATE_parser_prod___AIfexprExpr___n_expr__eq};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  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*/) /*PExpr::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PExpr::parent=*/;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  ATTR_parser_nodes___AIfexprExpr____n_expr(variable[0]) /*AIfexprExpr::_n_expr*/ =  variable[1] /*n*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[0]) /*PNode::parent=*/;
   }
+  return_label489: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AIfexprExpr___n_kwthen__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AIfexprExpr::n_kwthen= (src/parser//parser_prod.nit:5165,5--5169:20)"};
-  val_t variable0;
-  val_t variable1;
+  struct trace_t trace = {NULL, NULL, 5541, LOCATE_parser_prod___AIfexprExpr___n_kwthen__eq};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  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*/) /*TKwthen::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*TKwthen::parent=*/;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  ATTR_parser_nodes___AIfexprExpr____n_kwthen(variable[0]) /*AIfexprExpr::_n_kwthen*/ =  variable[1] /*n*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[0]) /*PNode::parent=*/;
   }
+  return_label490: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AIfexprExpr___n_then__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AIfexprExpr::n_then= (src/parser//parser_prod.nit:5172,5--5176:20)"};
-  val_t variable0;
-  val_t variable1;
+  struct trace_t trace = {NULL, NULL, 5548, LOCATE_parser_prod___AIfexprExpr___n_then__eq};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  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*/) /*PExpr::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PExpr::parent=*/;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  ATTR_parser_nodes___AIfexprExpr____n_then(variable[0]) /*AIfexprExpr::_n_then*/ =  variable[1] /*n*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[0]) /*PNode::parent=*/;
   }
+  return_label491: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AIfexprExpr___n_kwelse__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AIfexprExpr::n_kwelse= (src/parser//parser_prod.nit:5179,5--5183:20)"};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  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*/) /*TKwelse::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*TKwelse::parent=*/;
+  struct trace_t trace = {NULL, NULL, 5555, LOCATE_parser_prod___AIfexprExpr___n_kwelse__eq};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  ATTR_parser_nodes___AIfexprExpr____n_kwelse(variable[0]) /*AIfexprExpr::_n_kwelse*/ =  variable[1] /*n*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[0]) /*PNode::parent=*/;
   }
+  return_label492: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AIfexprExpr___n_else__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AIfexprExpr::n_else= (src/parser//parser_prod.nit:5186,5--5190:20)"};
-  val_t variable0;
-  val_t variable1;
+  struct trace_t trace = {NULL, NULL, 5562, LOCATE_parser_prod___AIfexprExpr___n_else__eq};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  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*/) /*PExpr::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PExpr::parent=*/;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  ATTR_parser_nodes___AIfexprExpr____n_else(variable[0]) /*AIfexprExpr::_n_else*/ =  variable[1] /*n*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[0]) /*PNode::parent=*/;
   }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AIfexprExpr___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, "parser_prod::AIfexprExpr::empty_init (src/parser//parser_prod.nit:5194,5--27)"};
-  trace.prev = tracehead; tracehead = &trace;
-  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, "parser_prod::AIfexprExpr::init_aifexprexpr (src/parser//parser_prod.nit:5196,5--5227:22)"};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  val_t variable3;
-  val_t variable4;
-  val_t variable5;
-  val_t variable6;
-  trace.prev = tracehead; tracehead = &trace;
-  variable0 =  param0;
-  variable1 =  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*/) /*TKwif::==*/)))))));
-  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) /*TKwif::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*/) /*PExpr::==*/)))))));
-  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) /*PExpr::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*/) /*TKwthen::==*/)))))));
-  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) /*TKwthen::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*/) /*PExpr::==*/)))))));
-  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) /*PExpr::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*/) /*TKwelse::==*/)))))));
-  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) /*TKwelse::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*/) /*PExpr::==*/)))))));
-  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) /*PExpr::parent=*/;
-  }
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AIfexprExpr].i] = 1;
+  return_label493: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AIfexprExpr___replace_child(val_t  self, val_t  param0, val_t  param1) {
-  struct trace_t trace = {NULL, "parser_prod::AIfexprExpr::replace_child (src/parser//parser_prod.nit:5231,5--5292:18)"};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  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*/) /*PNode::==*/)))))));
-  if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert failed: src/parser//parser_prod.nit:5233,9--32\n"); 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*/) /*TKwif::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*PNode::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_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 failed: src/parser//parser_prod.nit:5237,3--28\n"); 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_label459;
-  }
-  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*/) /*PExpr::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*PNode::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_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 failed: src/parser//parser_prod.nit:5247,3--28\n"); 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_label459;
-  }
-  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*/) /*TKwthen::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*PNode::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_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 failed: src/parser//parser_prod.nit:5257,3--30\n"); 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_label459;
-  }
-  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*/) /*PExpr::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*PNode::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_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 failed: src/parser//parser_prod.nit:5267,3--28\n"); 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_label459;
-  }
-  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*/) /*TKwelse::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*PNode::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_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 failed: src/parser//parser_prod.nit:5277,3--30\n"); 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_label459;
-  }
-  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*/) /*PExpr::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*PNode::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_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 failed: src/parser//parser_prod.nit:5287,3--28\n"); 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_label459;
+  struct trace_t trace = {NULL, NULL, 5608, LOCATE_parser_prod___AIfexprExpr___replace_child};
+  val_t variable[5];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Local variable */
+  variable[2] =  param1;
+  /* Register variable[3]: Method return value and escape marker */
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AIfexprExpr___replace_child, LOCATE_parser_prod, 5610); nit_exit(1);}
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___AIfexprExpr____n_kwif(variable[0]) /*AIfexprExpr::_n_kwif*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*PNode::parent=*/;
+      /* Register variable[4]: Result */
+      variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_TKwif, ID_TKwif)) /*cast TKwif*/;
+      if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AIfexprExpr___replace_child, LOCATE_parser_prod, 5614); nit_exit(1);}
+      ATTR_parser_nodes___AIfexprExpr____n_kwif(variable[0]) /*AIfexprExpr::_n_kwif*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      ATTR_parser_nodes___AIfexprExpr____n_kwif(variable[0]) /*AIfexprExpr::_n_kwif*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label494;
+  }
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___AIfexprExpr____n_expr(variable[0]) /*AIfexprExpr::_n_expr*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*PNode::parent=*/;
+      /* Register variable[4]: Result */
+      variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
+      if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AIfexprExpr___replace_child, LOCATE_parser_prod, 5624); nit_exit(1);}
+      ATTR_parser_nodes___AIfexprExpr____n_expr(variable[0]) /*AIfexprExpr::_n_expr*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      ATTR_parser_nodes___AIfexprExpr____n_expr(variable[0]) /*AIfexprExpr::_n_expr*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label494;
+  }
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___AIfexprExpr____n_kwthen(variable[0]) /*AIfexprExpr::_n_kwthen*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*PNode::parent=*/;
+      /* Register variable[4]: Result */
+      variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_TKwthen, ID_TKwthen)) /*cast TKwthen*/;
+      if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AIfexprExpr___replace_child, LOCATE_parser_prod, 5634); nit_exit(1);}
+      ATTR_parser_nodes___AIfexprExpr____n_kwthen(variable[0]) /*AIfexprExpr::_n_kwthen*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      ATTR_parser_nodes___AIfexprExpr____n_kwthen(variable[0]) /*AIfexprExpr::_n_kwthen*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label494;
+  }
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___AIfexprExpr____n_then(variable[0]) /*AIfexprExpr::_n_then*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*PNode::parent=*/;
+      /* Register variable[4]: Result */
+      variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
+      if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AIfexprExpr___replace_child, LOCATE_parser_prod, 5644); nit_exit(1);}
+      ATTR_parser_nodes___AIfexprExpr____n_then(variable[0]) /*AIfexprExpr::_n_then*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      ATTR_parser_nodes___AIfexprExpr____n_then(variable[0]) /*AIfexprExpr::_n_then*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label494;
+  }
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___AIfexprExpr____n_kwelse(variable[0]) /*AIfexprExpr::_n_kwelse*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*PNode::parent=*/;
+      /* Register variable[4]: Result */
+      variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_TKwelse, ID_TKwelse)) /*cast TKwelse*/;
+      if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AIfexprExpr___replace_child, LOCATE_parser_prod, 5654); nit_exit(1);}
+      ATTR_parser_nodes___AIfexprExpr____n_kwelse(variable[0]) /*AIfexprExpr::_n_kwelse*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      ATTR_parser_nodes___AIfexprExpr____n_kwelse(variable[0]) /*AIfexprExpr::_n_kwelse*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label494;
+  }
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___AIfexprExpr____n_else(variable[0]) /*AIfexprExpr::_n_else*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*PNode::parent=*/;
+      /* Register variable[4]: Result */
+      variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
+      if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AIfexprExpr___replace_child, LOCATE_parser_prod, 5664); nit_exit(1);}
+      ATTR_parser_nodes___AIfexprExpr____n_else(variable[0]) /*AIfexprExpr::_n_else*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      ATTR_parser_nodes___AIfexprExpr____n_else(variable[0]) /*AIfexprExpr::_n_else*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label494;
   }
-  return_label459: while(false);
+  return_label494: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AIfexprExpr___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AIfexprExpr::visit_all (src/parser//parser_prod.nit:5296,5--5314:27)"};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  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*/) /*TKwif::==*/)))))));
-  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*/) /*PExpr::==*/)))))));
-  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*/) /*TKwthen::==*/)))))));
-  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*/) /*PExpr::==*/)))))));
-  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*/) /*TKwelse::==*/)))))));
-  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*/) /*PExpr::==*/)))))));
-  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*/;
-  }
+  struct trace_t trace = {NULL, NULL, 5673, LOCATE_parser_prod___AIfexprExpr___visit_all};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AIfexprExpr____n_kwif(variable[0]) /*AIfexprExpr::_n_kwif*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AIfexprExpr____n_kwif(variable[0]) /*AIfexprExpr::_n_kwif*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AIfexprExpr____n_expr(variable[0]) /*AIfexprExpr::_n_expr*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AIfexprExpr____n_expr(variable[0]) /*AIfexprExpr::_n_expr*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AIfexprExpr____n_kwthen(variable[0]) /*AIfexprExpr::_n_kwthen*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AIfexprExpr____n_kwthen(variable[0]) /*AIfexprExpr::_n_kwthen*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AIfexprExpr____n_then(variable[0]) /*AIfexprExpr::_n_then*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AIfexprExpr____n_then(variable[0]) /*AIfexprExpr::_n_then*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AIfexprExpr____n_kwelse(variable[0]) /*AIfexprExpr::_n_kwelse*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AIfexprExpr____n_kwelse(variable[0]) /*AIfexprExpr::_n_kwelse*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AIfexprExpr____n_else(variable[0]) /*AIfexprExpr::_n_else*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AIfexprExpr____n_else(variable[0]) /*AIfexprExpr::_n_else*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  return_label495: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AIfexprExpr___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AIfexprExpr::visit_all_reverse (src/parser//parser_prod.nit:5318,5--5336:27)"};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  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*/) /*TKwif::==*/)))))));
-  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*/) /*PExpr::==*/)))))));
-  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*/) /*TKwthen::==*/)))))));
-  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*/) /*PExpr::==*/)))))));
-  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*/) /*TKwelse::==*/)))))));
-  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*/) /*PExpr::==*/)))))));
-  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*/;
-  }
+  struct trace_t trace = {NULL, NULL, 5695, LOCATE_parser_prod___AIfexprExpr___visit_all_reverse};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AIfexprExpr____n_kwif(variable[0]) /*AIfexprExpr::_n_kwif*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AIfexprExpr____n_kwif(variable[0]) /*AIfexprExpr::_n_kwif*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AIfexprExpr____n_expr(variable[0]) /*AIfexprExpr::_n_expr*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AIfexprExpr____n_expr(variable[0]) /*AIfexprExpr::_n_expr*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AIfexprExpr____n_kwthen(variable[0]) /*AIfexprExpr::_n_kwthen*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AIfexprExpr____n_kwthen(variable[0]) /*AIfexprExpr::_n_kwthen*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AIfexprExpr____n_then(variable[0]) /*AIfexprExpr::_n_then*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AIfexprExpr____n_then(variable[0]) /*AIfexprExpr::_n_then*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AIfexprExpr____n_kwelse(variable[0]) /*AIfexprExpr::_n_kwelse*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AIfexprExpr____n_kwelse(variable[0]) /*AIfexprExpr::_n_kwelse*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AIfexprExpr____n_else(variable[0]) /*AIfexprExpr::_n_else*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AIfexprExpr____n_else(variable[0]) /*AIfexprExpr::_n_else*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  return_label496: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AWhileExpr___n_kwwhile__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AWhileExpr::n_kwwhile= (src/parser//parser_prod.nit:5341,5--5345:20)"};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___AIfexprExpr___empty_init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 5570, LOCATE_parser_prod___AIfexprExpr___empty_init};
+  val_t variable[2];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  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*/) /*TKwwhile::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*TKwwhile::parent=*/;
-  }
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AIfexprExpr].i]) return;
+  /* Register variable[1]: Method return value and escape marker */
+  return_label497: while(false);
+  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AIfexprExpr].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AWhileExpr___n_expr__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AWhileExpr::n_expr= (src/parser//parser_prod.nit:5348,5--5352:20)"};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  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*/) /*PExpr::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PExpr::parent=*/;
-  }
+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, 5572, LOCATE_parser_prod___AIfexprExpr___init_aifexprexpr};
+  val_t variable[9];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Local variable */
+  variable[2] =  param1;
+  /* Register variable[3]: Local variable */
+  variable[3] =  param2;
+  /* Register variable[4]: Local variable */
+  variable[4] =  param3;
+  /* Register variable[5]: Local variable */
+  variable[5] =  param4;
+  /* Register variable[6]: Local variable */
+  variable[6] =  param5;
+  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AIfexprExpr].i]) return;
+  /* Register variable[7]: Method return value and escape marker */
+  CALL_parser_prod___AIfexprExpr___empty_init(variable[0])(variable[0], init_table /*YYY*/) /*AIfexprExpr::empty_init*/;
+  ATTR_parser_nodes___AIfexprExpr____n_kwif(variable[0]) /*AIfexprExpr::_n_kwif*/ =  variable[1] /*n_kwif*/;
+  /* Register variable[8]: Result */
+  variable[8] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_kwif*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_kwif*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n_kwif*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_kwif*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n_kwif*/)( variable[1] /*n_kwif*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[8])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n_kwif*/)( variable[1] /*n_kwif*/, variable[0]) /*PNode::parent=*/;
+  }
+  ATTR_parser_nodes___AIfexprExpr____n_expr(variable[0]) /*AIfexprExpr::_n_expr*/ =  variable[2] /*n_expr*/;
+  /* Register variable[8]: Result */
+  variable[8] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*n_expr*/ ==  NIT_NULL /*null*/) || (( variable[2] /*n_expr*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*n_expr*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*n_expr*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*n_expr*/)( variable[2] /*n_expr*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[8])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[2] /*n_expr*/)( variable[2] /*n_expr*/, variable[0]) /*PNode::parent=*/;
+  }
+  ATTR_parser_nodes___AIfexprExpr____n_kwthen(variable[0]) /*AIfexprExpr::_n_kwthen*/ =  variable[3] /*n_kwthen*/;
+  /* Register variable[8]: Result */
+  variable[8] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[3] /*n_kwthen*/ ==  NIT_NULL /*null*/) || (( variable[3] /*n_kwthen*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[3] /*n_kwthen*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[3] /*n_kwthen*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[3] /*n_kwthen*/)( variable[3] /*n_kwthen*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[8])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[3] /*n_kwthen*/)( variable[3] /*n_kwthen*/, variable[0]) /*PNode::parent=*/;
+  }
+  ATTR_parser_nodes___AIfexprExpr____n_then(variable[0]) /*AIfexprExpr::_n_then*/ =  variable[4] /*n_then*/;
+  /* Register variable[8]: Result */
+  variable[8] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[4] /*n_then*/ ==  NIT_NULL /*null*/) || (( variable[4] /*n_then*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[4] /*n_then*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[4] /*n_then*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[4] /*n_then*/)( variable[4] /*n_then*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[8])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[4] /*n_then*/)( variable[4] /*n_then*/, variable[0]) /*PNode::parent=*/;
+  }
+  ATTR_parser_nodes___AIfexprExpr____n_kwelse(variable[0]) /*AIfexprExpr::_n_kwelse*/ =  variable[5] /*n_kwelse*/;
+  /* Register variable[8]: Result */
+  variable[8] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[5] /*n_kwelse*/ ==  NIT_NULL /*null*/) || (( variable[5] /*n_kwelse*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[5] /*n_kwelse*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[5] /*n_kwelse*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[5] /*n_kwelse*/)( variable[5] /*n_kwelse*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[8])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[5] /*n_kwelse*/)( variable[5] /*n_kwelse*/, variable[0]) /*PNode::parent=*/;
+  }
+  ATTR_parser_nodes___AIfexprExpr____n_else(variable[0]) /*AIfexprExpr::_n_else*/ =  variable[6] /*n_else*/;
+  /* Register variable[8]: Result */
+  variable[8] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[6] /*n_else*/ ==  NIT_NULL /*null*/) || (( variable[6] /*n_else*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[6] /*n_else*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[6] /*n_else*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[6] /*n_else*/)( variable[6] /*n_else*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[8])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[6] /*n_else*/)( variable[6] /*n_else*/, variable[0]) /*PNode::parent=*/;
+  }
+  return_label498: while(false);
+  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AIfexprExpr].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AWhileExpr___n_kwdo__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AWhileExpr::n_kwdo= (src/parser//parser_prod.nit:5355,5--5359:20)"};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  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*/) /*TKwdo::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*TKwdo::parent=*/;
+void parser_prod___AWhileExpr___n_kwwhile__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 5718, LOCATE_parser_prod___AWhileExpr___n_kwwhile__eq};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  ATTR_parser_nodes___AWhileExpr____n_kwwhile(variable[0]) /*AWhileExpr::_n_kwwhile*/ =  variable[1] /*n*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[0]) /*PNode::parent=*/;
   }
+  return_label499: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AWhileExpr___n_block__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AWhileExpr::n_block= (src/parser//parser_prod.nit:5362,5--5366:20)"};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___AWhileExpr___n_expr__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 5725, LOCATE_parser_prod___AWhileExpr___n_expr__eq};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  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*/) /*PExpr::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PExpr::parent=*/;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  ATTR_parser_nodes___AWhileExpr____n_expr(variable[0]) /*AWhileExpr::_n_expr*/ =  variable[1] /*n*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[0]) /*PNode::parent=*/;
   }
+  return_label500: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AWhileExpr___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, "parser_prod::AWhileExpr::empty_init (src/parser//parser_prod.nit:5370,5--27)"};
+void parser_prod___AWhileExpr___n_kwdo__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 5732, LOCATE_parser_prod___AWhileExpr___n_kwdo__eq};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AWhileExpr].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AWhileExpr].i] = 1;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  ATTR_parser_nodes___AWhileExpr____n_kwdo(variable[0]) /*AWhileExpr::_n_kwdo*/ =  variable[1] /*n*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[0]) /*PNode::parent=*/;
+  }
+  return_label501: while(false);
   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, "parser_prod::AWhileExpr::init_awhileexpr (src/parser//parser_prod.nit:5372,5--5393:23)"};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  val_t variable3;
-  val_t variable4;
-  trace.prev = tracehead; tracehead = &trace;
-  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*/) /*TKwwhile::==*/)))))));
-  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) /*TKwwhile::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*/) /*PExpr::==*/)))))));
-  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) /*PExpr::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*/) /*TKwdo::==*/)))))));
-  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) /*TKwdo::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*/) /*PExpr::==*/)))))));
-  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) /*PExpr::parent=*/;
-  }
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AWhileExpr].i] = 1;
+void parser_prod___AWhileExpr___n_block__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 5739, LOCATE_parser_prod___AWhileExpr___n_block__eq};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  ATTR_parser_nodes___AWhileExpr____n_block(variable[0]) /*AWhileExpr::_n_block*/ =  variable[1] /*n*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[0]) /*PNode::parent=*/;
+  }
+  return_label502: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AWhileExpr___replace_child(val_t  self, val_t  param0, val_t  param1) {
-  struct trace_t trace = {NULL, "parser_prod::AWhileExpr::replace_child (src/parser//parser_prod.nit:5397,5--5438:18)"};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  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*/) /*PNode::==*/)))))));
-  if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert failed: src/parser//parser_prod.nit:5399,9--32\n"); 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*/) /*TKwwhile::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*PNode::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_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 failed: src/parser//parser_prod.nit:5403,3--31\n"); 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_label468;
-  }
-  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*/) /*PExpr::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*PNode::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_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 failed: src/parser//parser_prod.nit:5413,3--28\n"); 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_label468;
-  }
-  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*/) /*TKwdo::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*PNode::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_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 failed: src/parser//parser_prod.nit:5423,3--28\n"); 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_label468;
-  }
-  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*/) /*PExpr::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*PNode::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_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 failed: src/parser//parser_prod.nit:5433,3--28\n"); 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_label468;
+  struct trace_t trace = {NULL, NULL, 5775, LOCATE_parser_prod___AWhileExpr___replace_child};
+  val_t variable[5];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Local variable */
+  variable[2] =  param1;
+  /* Register variable[3]: Method return value and escape marker */
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AWhileExpr___replace_child, LOCATE_parser_prod, 5777); nit_exit(1);}
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___AWhileExpr____n_kwwhile(variable[0]) /*AWhileExpr::_n_kwwhile*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*PNode::parent=*/;
+      /* Register variable[4]: Result */
+      variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_TKwwhile, ID_TKwwhile)) /*cast TKwwhile*/;
+      if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AWhileExpr___replace_child, LOCATE_parser_prod, 5781); nit_exit(1);}
+      ATTR_parser_nodes___AWhileExpr____n_kwwhile(variable[0]) /*AWhileExpr::_n_kwwhile*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      ATTR_parser_nodes___AWhileExpr____n_kwwhile(variable[0]) /*AWhileExpr::_n_kwwhile*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label503;
+  }
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___AWhileExpr____n_expr(variable[0]) /*AWhileExpr::_n_expr*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*PNode::parent=*/;
+      /* Register variable[4]: Result */
+      variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
+      if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AWhileExpr___replace_child, LOCATE_parser_prod, 5791); nit_exit(1);}
+      ATTR_parser_nodes___AWhileExpr____n_expr(variable[0]) /*AWhileExpr::_n_expr*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      ATTR_parser_nodes___AWhileExpr____n_expr(variable[0]) /*AWhileExpr::_n_expr*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label503;
+  }
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___AWhileExpr____n_kwdo(variable[0]) /*AWhileExpr::_n_kwdo*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*PNode::parent=*/;
+      /* Register variable[4]: Result */
+      variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_TKwdo, ID_TKwdo)) /*cast TKwdo*/;
+      if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AWhileExpr___replace_child, LOCATE_parser_prod, 5801); nit_exit(1);}
+      ATTR_parser_nodes___AWhileExpr____n_kwdo(variable[0]) /*AWhileExpr::_n_kwdo*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      ATTR_parser_nodes___AWhileExpr____n_kwdo(variable[0]) /*AWhileExpr::_n_kwdo*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label503;
+  }
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___AWhileExpr____n_block(variable[0]) /*AWhileExpr::_n_block*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*PNode::parent=*/;
+      /* Register variable[4]: Result */
+      variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
+      if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AWhileExpr___replace_child, LOCATE_parser_prod, 5811); nit_exit(1);}
+      ATTR_parser_nodes___AWhileExpr____n_block(variable[0]) /*AWhileExpr::_n_block*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      ATTR_parser_nodes___AWhileExpr____n_block(variable[0]) /*AWhileExpr::_n_block*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label503;
   }
-  return_label468: while(false);
+  return_label503: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AWhileExpr___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AWhileExpr::visit_all (src/parser//parser_prod.nit:5442,5--5454:28)"};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  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*/) /*TKwwhile::==*/)))))));
-  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*/) /*PExpr::==*/)))))));
-  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*/) /*TKwdo::==*/)))))));
-  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*/) /*PExpr::==*/)))))));
-  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*/;
-  }
+  struct trace_t trace = {NULL, NULL, 5820, LOCATE_parser_prod___AWhileExpr___visit_all};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AWhileExpr____n_kwwhile(variable[0]) /*AWhileExpr::_n_kwwhile*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AWhileExpr____n_kwwhile(variable[0]) /*AWhileExpr::_n_kwwhile*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AWhileExpr____n_expr(variable[0]) /*AWhileExpr::_n_expr*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AWhileExpr____n_expr(variable[0]) /*AWhileExpr::_n_expr*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AWhileExpr____n_kwdo(variable[0]) /*AWhileExpr::_n_kwdo*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AWhileExpr____n_kwdo(variable[0]) /*AWhileExpr::_n_kwdo*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AWhileExpr____n_block(variable[0]) /*AWhileExpr::_n_block*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AWhileExpr____n_block(variable[0]) /*AWhileExpr::_n_block*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  return_label504: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AWhileExpr___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AWhileExpr::visit_all_reverse (src/parser//parser_prod.nit:5458,5--5470:28)"};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  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*/) /*TKwwhile::==*/)))))));
-  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*/) /*PExpr::==*/)))))));
-  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*/) /*TKwdo::==*/)))))));
-  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*/) /*PExpr::==*/)))))));
-  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*/;
+  struct trace_t trace = {NULL, NULL, 5836, LOCATE_parser_prod___AWhileExpr___visit_all_reverse};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AWhileExpr____n_kwwhile(variable[0]) /*AWhileExpr::_n_kwwhile*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AWhileExpr____n_kwwhile(variable[0]) /*AWhileExpr::_n_kwwhile*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AWhileExpr____n_expr(variable[0]) /*AWhileExpr::_n_expr*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AWhileExpr____n_expr(variable[0]) /*AWhileExpr::_n_expr*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AWhileExpr____n_kwdo(variable[0]) /*AWhileExpr::_n_kwdo*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AWhileExpr____n_kwdo(variable[0]) /*AWhileExpr::_n_kwdo*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AWhileExpr____n_block(variable[0]) /*AWhileExpr::_n_block*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AWhileExpr____n_block(variable[0]) /*AWhileExpr::_n_block*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
+  return_label505: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AForExpr___n_vardecl__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AForExpr::n_vardecl= (src/parser//parser_prod.nit:5475,5--5479:20)"};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___AWhileExpr___empty_init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 5747, LOCATE_parser_prod___AWhileExpr___empty_init};
+  val_t variable[2];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  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*/) /*PExpr::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PExpr::parent=*/;
-  }
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AWhileExpr].i]) return;
+  /* Register variable[1]: Method return value and escape marker */
+  return_label506: while(false);
+  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AWhileExpr].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AForExpr___n_kwdo__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AForExpr::n_kwdo= (src/parser//parser_prod.nit:5482,5--5486:20)"};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  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*/) /*TKwdo::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*TKwdo::parent=*/;
-  }
+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, 5749, LOCATE_parser_prod___AWhileExpr___init_awhileexpr};
+  val_t variable[7];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Local variable */
+  variable[2] =  param1;
+  /* Register variable[3]: Local variable */
+  variable[3] =  param2;
+  /* Register variable[4]: Local variable */
+  variable[4] =  param3;
+  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AWhileExpr].i]) return;
+  /* Register variable[5]: Method return value and escape marker */
+  CALL_parser_prod___AWhileExpr___empty_init(variable[0])(variable[0], init_table /*YYY*/) /*AWhileExpr::empty_init*/;
+  ATTR_parser_nodes___AWhileExpr____n_kwwhile(variable[0]) /*AWhileExpr::_n_kwwhile*/ =  variable[1] /*n_kwwhile*/;
+  /* Register variable[6]: Result */
+  variable[6] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_kwwhile*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_kwwhile*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n_kwwhile*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_kwwhile*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n_kwwhile*/)( variable[1] /*n_kwwhile*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[6])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n_kwwhile*/)( variable[1] /*n_kwwhile*/, variable[0]) /*PNode::parent=*/;
+  }
+  ATTR_parser_nodes___AWhileExpr____n_expr(variable[0]) /*AWhileExpr::_n_expr*/ =  variable[2] /*n_expr*/;
+  /* Register variable[6]: Result */
+  variable[6] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*n_expr*/ ==  NIT_NULL /*null*/) || (( variable[2] /*n_expr*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*n_expr*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*n_expr*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*n_expr*/)( variable[2] /*n_expr*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[6])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[2] /*n_expr*/)( variable[2] /*n_expr*/, variable[0]) /*PNode::parent=*/;
+  }
+  ATTR_parser_nodes___AWhileExpr____n_kwdo(variable[0]) /*AWhileExpr::_n_kwdo*/ =  variable[3] /*n_kwdo*/;
+  /* Register variable[6]: Result */
+  variable[6] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[3] /*n_kwdo*/ ==  NIT_NULL /*null*/) || (( variable[3] /*n_kwdo*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[3] /*n_kwdo*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[3] /*n_kwdo*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[3] /*n_kwdo*/)( variable[3] /*n_kwdo*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[6])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[3] /*n_kwdo*/)( variable[3] /*n_kwdo*/, variable[0]) /*PNode::parent=*/;
+  }
+  ATTR_parser_nodes___AWhileExpr____n_block(variable[0]) /*AWhileExpr::_n_block*/ =  variable[4] /*n_block*/;
+  /* Register variable[6]: Result */
+  variable[6] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[4] /*n_block*/ ==  NIT_NULL /*null*/) || (( variable[4] /*n_block*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[4] /*n_block*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[4] /*n_block*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[4] /*n_block*/)( variable[4] /*n_block*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[6])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[4] /*n_block*/)( variable[4] /*n_block*/, variable[0]) /*PNode::parent=*/;
+  }
+  return_label507: while(false);
+  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AWhileExpr].i] = 1;
+  tracehead = trace.prev;
+  return;
+}
+void parser_prod___AForExpr___n_kwfor__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 5853, LOCATE_parser_prod___AForExpr___n_kwfor__eq};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  ATTR_parser_nodes___AForExpr____n_kwfor(variable[0]) /*AForExpr::_n_kwfor*/ =  variable[1] /*n*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[0]) /*PNode::parent=*/;
+  }
+  return_label508: while(false);
+  tracehead = trace.prev;
+  return;
+}
+void parser_prod___AForExpr___n_id__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 5860, LOCATE_parser_prod___AForExpr___n_id__eq};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  ATTR_parser_nodes___AForExpr____n_id(variable[0]) /*AForExpr::_n_id*/ =  variable[1] /*n*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[0]) /*PNode::parent=*/;
+  }
+  return_label509: while(false);
+  tracehead = trace.prev;
+  return;
+}
+void parser_prod___AForExpr___n_expr__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 5867, LOCATE_parser_prod___AForExpr___n_expr__eq};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  ATTR_parser_nodes___AForExpr____n_expr(variable[0]) /*AForExpr::_n_expr*/ =  variable[1] /*n*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[0]) /*PNode::parent=*/;
+  }
+  return_label510: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AForExpr___n_block__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AForExpr::n_block= (src/parser//parser_prod.nit:5489,5--5493:20)"};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___AForExpr___n_kwdo__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 5874, LOCATE_parser_prod___AForExpr___n_kwdo__eq};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  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*/) /*PExpr::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PExpr::parent=*/;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  ATTR_parser_nodes___AForExpr____n_kwdo(variable[0]) /*AForExpr::_n_kwdo*/ =  variable[1] /*n*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[0]) /*PNode::parent=*/;
   }
+  return_label511: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AForExpr___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, "parser_prod::AForExpr::empty_init (src/parser//parser_prod.nit:5497,5--27)"};
-  trace.prev = tracehead; tracehead = &trace;
-  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, "parser_prod::AForExpr::init_aforexpr (src/parser//parser_prod.nit:5499,5--5515:23)"};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  val_t variable3;
-  trace.prev = tracehead; tracehead = &trace;
-  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*/) /*PExpr::==*/)))))));
-  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) /*PExpr::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*/) /*TKwdo::==*/)))))));
-  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) /*TKwdo::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*/) /*PExpr::==*/)))))));
-  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) /*PExpr::parent=*/;
+void parser_prod___AForExpr___n_block__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 5881, LOCATE_parser_prod___AForExpr___n_block__eq};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  ATTR_parser_nodes___AForExpr____n_block(variable[0]) /*AForExpr::_n_block*/ =  variable[1] /*n*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[0]) /*PNode::parent=*/;
   }
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AForExpr].i] = 1;
+  return_label512: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AForExpr___replace_child(val_t  self, val_t  param0, val_t  param1) {
-  struct trace_t trace = {NULL, "parser_prod::AForExpr::replace_child (src/parser//parser_prod.nit:5519,5--5550:18)"};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  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*/) /*PNode::==*/)))))));
-  if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert failed: src/parser//parser_prod.nit:5521,9--32\n"); 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*/) /*PExpr::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*PNode::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_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 failed: src/parser//parser_prod.nit:5525,3--28\n"); 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_label476;
-  }
-  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*/) /*TKwdo::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*PNode::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_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 failed: src/parser//parser_prod.nit:5535,3--28\n"); 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_label476;
-  }
-  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*/) /*PExpr::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*PNode::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_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 failed: src/parser//parser_prod.nit:5545,3--28\n"); 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_label476;
+  struct trace_t trace = {NULL, NULL, 5922, LOCATE_parser_prod___AForExpr___replace_child};
+  val_t variable[5];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Local variable */
+  variable[2] =  param1;
+  /* Register variable[3]: Method return value and escape marker */
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AForExpr___replace_child, LOCATE_parser_prod, 5924); nit_exit(1);}
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___AForExpr____n_kwfor(variable[0]) /*AForExpr::_n_kwfor*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*PNode::parent=*/;
+      /* Register variable[4]: Result */
+      variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_TKwfor, ID_TKwfor)) /*cast TKwfor*/;
+      if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AForExpr___replace_child, LOCATE_parser_prod, 5928); nit_exit(1);}
+      ATTR_parser_nodes___AForExpr____n_kwfor(variable[0]) /*AForExpr::_n_kwfor*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      ATTR_parser_nodes___AForExpr____n_kwfor(variable[0]) /*AForExpr::_n_kwfor*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label513;
+  }
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___AForExpr____n_id(variable[0]) /*AForExpr::_n_id*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*PNode::parent=*/;
+      /* Register variable[4]: Result */
+      variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_TId, ID_TId)) /*cast TId*/;
+      if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AForExpr___replace_child, LOCATE_parser_prod, 5938); nit_exit(1);}
+      ATTR_parser_nodes___AForExpr____n_id(variable[0]) /*AForExpr::_n_id*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      ATTR_parser_nodes___AForExpr____n_id(variable[0]) /*AForExpr::_n_id*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label513;
+  }
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___AForExpr____n_expr(variable[0]) /*AForExpr::_n_expr*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*PNode::parent=*/;
+      /* Register variable[4]: Result */
+      variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
+      if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AForExpr___replace_child, LOCATE_parser_prod, 5948); nit_exit(1);}
+      ATTR_parser_nodes___AForExpr____n_expr(variable[0]) /*AForExpr::_n_expr*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      ATTR_parser_nodes___AForExpr____n_expr(variable[0]) /*AForExpr::_n_expr*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label513;
+  }
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___AForExpr____n_kwdo(variable[0]) /*AForExpr::_n_kwdo*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*PNode::parent=*/;
+      /* Register variable[4]: Result */
+      variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_TKwdo, ID_TKwdo)) /*cast TKwdo*/;
+      if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AForExpr___replace_child, LOCATE_parser_prod, 5958); nit_exit(1);}
+      ATTR_parser_nodes___AForExpr____n_kwdo(variable[0]) /*AForExpr::_n_kwdo*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      ATTR_parser_nodes___AForExpr____n_kwdo(variable[0]) /*AForExpr::_n_kwdo*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label513;
+  }
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___AForExpr____n_block(variable[0]) /*AForExpr::_n_block*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*PNode::parent=*/;
+      /* Register variable[4]: Result */
+      variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
+      if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AForExpr___replace_child, LOCATE_parser_prod, 5968); nit_exit(1);}
+      ATTR_parser_nodes___AForExpr____n_block(variable[0]) /*AForExpr::_n_block*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      ATTR_parser_nodes___AForExpr____n_block(variable[0]) /*AForExpr::_n_block*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label513;
   }
-  return_label476: while(false);
+  return_label513: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AForExpr___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AForExpr::visit_all (src/parser//parser_prod.nit:5554,5--5563:28)"};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  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*/) /*PExpr::==*/)))))));
-  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*/) /*TKwdo::==*/)))))));
-  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*/) /*PExpr::==*/)))))));
-  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*/;
-  }
+  struct trace_t trace = {NULL, NULL, 5977, LOCATE_parser_prod___AForExpr___visit_all};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AForExpr____n_kwfor(variable[0]) /*AForExpr::_n_kwfor*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AForExpr____n_kwfor(variable[0]) /*AForExpr::_n_kwfor*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AForExpr____n_id(variable[0]) /*AForExpr::_n_id*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AForExpr____n_id(variable[0]) /*AForExpr::_n_id*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AForExpr____n_expr(variable[0]) /*AForExpr::_n_expr*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AForExpr____n_expr(variable[0]) /*AForExpr::_n_expr*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AForExpr____n_kwdo(variable[0]) /*AForExpr::_n_kwdo*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AForExpr____n_kwdo(variable[0]) /*AForExpr::_n_kwdo*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AForExpr____n_block(variable[0]) /*AForExpr::_n_block*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AForExpr____n_block(variable[0]) /*AForExpr::_n_block*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  return_label514: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AForExpr___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AForExpr::visit_all_reverse (src/parser//parser_prod.nit:5567,5--5576:28)"};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  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*/) /*PExpr::==*/)))))));
-  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*/) /*TKwdo::==*/)))))));
-  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*/) /*PExpr::==*/)))))));
-  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*/;
-  }
+  struct trace_t trace = {NULL, NULL, 5996, LOCATE_parser_prod___AForExpr___visit_all_reverse};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AForExpr____n_kwfor(variable[0]) /*AForExpr::_n_kwfor*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AForExpr____n_kwfor(variable[0]) /*AForExpr::_n_kwfor*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AForExpr____n_id(variable[0]) /*AForExpr::_n_id*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AForExpr____n_id(variable[0]) /*AForExpr::_n_id*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AForExpr____n_expr(variable[0]) /*AForExpr::_n_expr*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AForExpr____n_expr(variable[0]) /*AForExpr::_n_expr*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AForExpr____n_kwdo(variable[0]) /*AForExpr::_n_kwdo*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AForExpr____n_kwdo(variable[0]) /*AForExpr::_n_kwdo*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AForExpr____n_block(variable[0]) /*AForExpr::_n_block*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AForExpr____n_block(variable[0]) /*AForExpr::_n_block*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  return_label515: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AForVardeclExpr___n_kwfor__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AForVardeclExpr::n_kwfor= (src/parser//parser_prod.nit:5581,5--5585:20)"};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  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*/) /*TKwfor::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*TKwfor::parent=*/;
-  }
+void parser_prod___AForExpr___empty_init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 5889, LOCATE_parser_prod___AForExpr___empty_init};
+  val_t variable[2];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AForExpr].i]) return;
+  /* Register variable[1]: Method return value and escape marker */
+  return_label516: while(false);
+  init_table[VAL2OBJ(variable[0])->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, val_t  param3, val_t  param4, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 5891, LOCATE_parser_prod___AForExpr___init_aforexpr};
+  val_t variable[8];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Local variable */
+  variable[2] =  param1;
+  /* Register variable[3]: Local variable */
+  variable[3] =  param2;
+  /* Register variable[4]: Local variable */
+  variable[4] =  param3;
+  /* Register variable[5]: Local variable */
+  variable[5] =  param4;
+  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AForExpr].i]) return;
+  /* Register variable[6]: Method return value and escape marker */
+  CALL_parser_prod___AForExpr___empty_init(variable[0])(variable[0], init_table /*YYY*/) /*AForExpr::empty_init*/;
+  ATTR_parser_nodes___AForExpr____n_kwfor(variable[0]) /*AForExpr::_n_kwfor*/ =  variable[1] /*n_kwfor*/;
+  /* Register variable[7]: Result */
+  variable[7] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_kwfor*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_kwfor*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n_kwfor*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_kwfor*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n_kwfor*/)( variable[1] /*n_kwfor*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[7])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n_kwfor*/)( variable[1] /*n_kwfor*/, variable[0]) /*PNode::parent=*/;
+  }
+  ATTR_parser_nodes___AForExpr____n_id(variable[0]) /*AForExpr::_n_id*/ =  variable[2] /*n_id*/;
+  /* Register variable[7]: Result */
+  variable[7] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*n_id*/ ==  NIT_NULL /*null*/) || (( variable[2] /*n_id*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*n_id*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*n_id*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*n_id*/)( variable[2] /*n_id*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[7])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[2] /*n_id*/)( variable[2] /*n_id*/, variable[0]) /*PNode::parent=*/;
+  }
+  ATTR_parser_nodes___AForExpr____n_expr(variable[0]) /*AForExpr::_n_expr*/ =  variable[3] /*n_expr*/;
+  /* Register variable[7]: Result */
+  variable[7] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[3] /*n_expr*/ ==  NIT_NULL /*null*/) || (( variable[3] /*n_expr*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[3] /*n_expr*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[3] /*n_expr*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[3] /*n_expr*/)( variable[3] /*n_expr*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[7])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[3] /*n_expr*/)( variable[3] /*n_expr*/, variable[0]) /*PNode::parent=*/;
+  }
+  ATTR_parser_nodes___AForExpr____n_kwdo(variable[0]) /*AForExpr::_n_kwdo*/ =  variable[4] /*n_kwdo*/;
+  /* Register variable[7]: Result */
+  variable[7] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[4] /*n_kwdo*/ ==  NIT_NULL /*null*/) || (( variable[4] /*n_kwdo*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[4] /*n_kwdo*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[4] /*n_kwdo*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[4] /*n_kwdo*/)( variable[4] /*n_kwdo*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[7])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[4] /*n_kwdo*/)( variable[4] /*n_kwdo*/, variable[0]) /*PNode::parent=*/;
+  }
+  ATTR_parser_nodes___AForExpr____n_block(variable[0]) /*AForExpr::_n_block*/ =  variable[5] /*n_block*/;
+  /* Register variable[7]: Result */
+  variable[7] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[5] /*n_block*/ ==  NIT_NULL /*null*/) || (( variable[5] /*n_block*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[5] /*n_block*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[5] /*n_block*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[5] /*n_block*/)( variable[5] /*n_block*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[7])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[5] /*n_block*/)( variable[5] /*n_block*/, variable[0]) /*PNode::parent=*/;
+  }
+  return_label517: while(false);
+  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AForExpr].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AForVardeclExpr___n_id__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AForVardeclExpr::n_id= (src/parser//parser_prod.nit:5588,5--5592:20)"};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___AAssertExpr___n_kwassert__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 6016, LOCATE_parser_prod___AAssertExpr___n_kwassert__eq};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  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*/) /*TId::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*TId::parent=*/;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  ATTR_parser_nodes___AAssertExpr____n_kwassert(variable[0]) /*AAssertExpr::_n_kwassert*/ =  variable[1] /*n*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[0]) /*PNode::parent=*/;
   }
+  return_label518: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AForVardeclExpr___n_expr__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AForVardeclExpr::n_expr= (src/parser//parser_prod.nit:5595,5--5599:20)"};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  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*/) /*PExpr::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PExpr::parent=*/;
+void parser_prod___AAssertExpr___n_id__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 6023, LOCATE_parser_prod___AAssertExpr___n_id__eq};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  ATTR_parser_nodes___AAssertExpr____n_id(variable[0]) /*AAssertExpr::_n_id*/ =  variable[1] /*n*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[0]) /*PNode::parent=*/;
   }
+  return_label519: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AForVardeclExpr___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, "parser_prod::AForVardeclExpr::empty_init (src/parser//parser_prod.nit:5603,5--27)"};
-  trace.prev = tracehead; tracehead = &trace;
-  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, "parser_prod::AForVardeclExpr::init_aforvardeclexpr (src/parser//parser_prod.nit:5605,5--5621:22)"};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  val_t variable3;
+void parser_prod___AAssertExpr___n_expr__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 6030, LOCATE_parser_prod___AAssertExpr___n_expr__eq};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  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*/) /*TKwfor::==*/)))))));
-  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) /*TKwfor::parent=*/;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  ATTR_parser_nodes___AAssertExpr____n_expr(variable[0]) /*AAssertExpr::_n_expr*/ =  variable[1] /*n*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[0]) /*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*/) /*TId::==*/)))))));
-  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) /*TId::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*/) /*PExpr::==*/)))))));
-  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) /*PExpr::parent=*/;
-  }
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AForVardeclExpr].i] = 1;
+  return_label520: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AForVardeclExpr___replace_child(val_t  self, val_t  param0, val_t  param1) {
-  struct trace_t trace = {NULL, "parser_prod::AForVardeclExpr::replace_child (src/parser//parser_prod.nit:5625,5--5656:18)"};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  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*/) /*PNode::==*/)))))));
-  if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert failed: src/parser//parser_prod.nit:5627,9--32\n"); 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*/) /*TKwfor::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*PNode::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_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 failed: src/parser//parser_prod.nit:5631,3--29\n"); nit_exit(1);}
-      ATTR_parser_nodes___AForVardeclExpr____n_kwfor( self) /*AForVardeclExpr::_n_kwfor*/ =  variable1 /*new_child*/;
+void parser_prod___AAssertExpr___replace_child(val_t  self, val_t  param0, val_t  param1) {
+  struct trace_t trace = {NULL, NULL, 6061, LOCATE_parser_prod___AAssertExpr___replace_child};
+  val_t variable[5];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Local variable */
+  variable[2] =  param1;
+  /* Register variable[3]: Method return value and escape marker */
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AAssertExpr___replace_child, LOCATE_parser_prod, 6063); nit_exit(1);}
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___AAssertExpr____n_kwassert(variable[0]) /*AAssertExpr::_n_kwassert*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*PNode::parent=*/;
+      /* Register variable[4]: Result */
+      variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_TKwassert, ID_TKwassert)) /*cast TKwassert*/;
+      if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AAssertExpr___replace_child, LOCATE_parser_prod, 6067); nit_exit(1);}
+      ATTR_parser_nodes___AAssertExpr____n_kwassert(variable[0]) /*AAssertExpr::_n_kwassert*/ =  variable[2] /*new_child*/;
     } else { /*if*/
-      ATTR_parser_nodes___AForVardeclExpr____n_kwfor( self) /*AForVardeclExpr::_n_kwfor*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label484;
-  }
-  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*/) /*TId::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*PNode::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_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 failed: src/parser//parser_prod.nit:5641,3--26\n"); nit_exit(1);}
-      ATTR_parser_nodes___AForVardeclExpr____n_id( self) /*AForVardeclExpr::_n_id*/ =  variable1 /*new_child*/;
+      ATTR_parser_nodes___AAssertExpr____n_kwassert(variable[0]) /*AAssertExpr::_n_kwassert*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label521;
+  }
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___AAssertExpr____n_id(variable[0]) /*AAssertExpr::_n_id*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*PNode::parent=*/;
+      /* Register variable[4]: Result */
+      variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_TId, ID_TId)) /*cast TId*/;
+      if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AAssertExpr___replace_child, LOCATE_parser_prod, 6077); nit_exit(1);}
+      ATTR_parser_nodes___AAssertExpr____n_id(variable[0]) /*AAssertExpr::_n_id*/ =  variable[2] /*new_child*/;
     } else { /*if*/
-      ATTR_parser_nodes___AForVardeclExpr____n_id( self) /*AForVardeclExpr::_n_id*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label484;
-  }
-  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*/) /*PExpr::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*PNode::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_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 failed: src/parser//parser_prod.nit:5651,3--28\n"); nit_exit(1);}
-      ATTR_parser_nodes___AForVardeclExpr____n_expr( self) /*AForVardeclExpr::_n_expr*/ =  variable1 /*new_child*/;
+      ATTR_parser_nodes___AAssertExpr____n_id(variable[0]) /*AAssertExpr::_n_id*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label521;
+  }
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___AAssertExpr____n_expr(variable[0]) /*AAssertExpr::_n_expr*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*PNode::parent=*/;
+      /* Register variable[4]: Result */
+      variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
+      if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AAssertExpr___replace_child, LOCATE_parser_prod, 6087); nit_exit(1);}
+      ATTR_parser_nodes___AAssertExpr____n_expr(variable[0]) /*AAssertExpr::_n_expr*/ =  variable[2] /*new_child*/;
     } else { /*if*/
-      ATTR_parser_nodes___AForVardeclExpr____n_expr( self) /*AForVardeclExpr::_n_expr*/ =  NIT_NULL /*null*/;
+      ATTR_parser_nodes___AAssertExpr____n_expr(variable[0]) /*AAssertExpr::_n_expr*/ =  NIT_NULL /*null*/;
     }
-    goto return_label484;
-  }
-  return_label484: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AForVardeclExpr___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AForVardeclExpr::visit_all (src/parser//parser_prod.nit:5660,5--5669:27)"};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  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*/) /*TKwfor::==*/)))))));
-  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*/) /*TId::==*/)))))));
-  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*/) /*PExpr::==*/)))))));
-  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*/;
+    goto return_label521;
   }
+  return_label521: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AForVardeclExpr___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AForVardeclExpr::visit_all_reverse (src/parser//parser_prod.nit:5673,5--5682:27)"};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  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*/) /*TKwfor::==*/)))))));
-  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*/) /*TId::==*/)))))));
-  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*/) /*PExpr::==*/)))))));
-  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, "parser_prod::AAssertExpr::n_kwassert= (src/parser//parser_prod.nit:5687,5--5691:20)"};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  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*/) /*TKwassert::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*TKwassert::parent=*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AAssertExpr___n_id__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AAssertExpr::n_id= (src/parser//parser_prod.nit:5694,5--5698:20)"};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  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*/) /*TId::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*TId::parent=*/;
-  }
+void parser_prod___AAssertExpr___visit_all(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 6096, LOCATE_parser_prod___AAssertExpr___visit_all};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AAssertExpr____n_kwassert(variable[0]) /*AAssertExpr::_n_kwassert*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AAssertExpr____n_kwassert(variable[0]) /*AAssertExpr::_n_kwassert*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AAssertExpr____n_id(variable[0]) /*AAssertExpr::_n_id*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AAssertExpr____n_id(variable[0]) /*AAssertExpr::_n_id*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AAssertExpr____n_expr(variable[0]) /*AAssertExpr::_n_expr*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AAssertExpr____n_expr(variable[0]) /*AAssertExpr::_n_expr*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  return_label522: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AAssertExpr___n_expr__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AAssertExpr::n_expr= (src/parser//parser_prod.nit:5701,5--5705:20)"};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  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*/) /*PExpr::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PExpr::parent=*/;
-  }
+void parser_prod___AAssertExpr___visit_all_reverse(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 6109, LOCATE_parser_prod___AAssertExpr___visit_all_reverse};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AAssertExpr____n_kwassert(variable[0]) /*AAssertExpr::_n_kwassert*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AAssertExpr____n_kwassert(variable[0]) /*AAssertExpr::_n_kwassert*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AAssertExpr____n_id(variable[0]) /*AAssertExpr::_n_id*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AAssertExpr____n_id(variable[0]) /*AAssertExpr::_n_id*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AAssertExpr____n_expr(variable[0]) /*AAssertExpr::_n_expr*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AAssertExpr____n_expr(variable[0]) /*AAssertExpr::_n_expr*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  return_label523: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AAssertExpr___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, "parser_prod::AAssertExpr::empty_init (src/parser//parser_prod.nit:5709,5--27)"};
+  struct trace_t trace = {NULL, NULL, 6038, LOCATE_parser_prod___AAssertExpr___empty_init};
+  val_t variable[2];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AAssertExpr].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AAssertExpr].i] = 1;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AAssertExpr].i]) return;
+  /* Register variable[1]: Method return value and escape marker */
+  return_label524: while(false);
+  init_table[VAL2OBJ(variable[0])->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, "parser_prod::AAssertExpr::init_aassertexpr (src/parser//parser_prod.nit:5711,5--5727:22)"};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  val_t variable3;
-  trace.prev = tracehead; tracehead = &trace;
-  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*/) /*TKwassert::==*/)))))));
-  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) /*TKwassert::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*/) /*TId::==*/)))))));
-  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) /*TId::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*/) /*PExpr::==*/)))))));
-  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) /*PExpr::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, "parser_prod::AAssertExpr::replace_child (src/parser//parser_prod.nit:5731,5--5762:18)"};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  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*/) /*PNode::==*/)))))));
-  if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert failed: src/parser//parser_prod.nit:5733,9--32\n"); 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*/) /*TKwassert::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*PNode::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_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 failed: src/parser//parser_prod.nit:5737,3--32\n"); 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_label492;
-  }
-  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*/) /*TId::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*PNode::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_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 failed: src/parser//parser_prod.nit:5747,3--26\n"); 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_label492;
-  }
-  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*/) /*PExpr::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*PNode::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_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 failed: src/parser//parser_prod.nit:5757,3--28\n"); 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_label492;
-  }
-  return_label492: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AAssertExpr___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AAssertExpr::visit_all (src/parser//parser_prod.nit:5766,5--5775:27)"};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  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*/) /*TKwassert::==*/)))))));
-  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*/) /*TId::==*/)))))));
-  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*/) /*PExpr::==*/)))))));
-  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, "parser_prod::AAssertExpr::visit_all_reverse (src/parser//parser_prod.nit:5779,5--5788:27)"};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  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*/) /*TKwassert::==*/)))))));
-  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*/) /*TId::==*/)))))));
-  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*/) /*PExpr::==*/)))))));
-  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, "parser_prod::AOnceExpr::n_kwonce= (src/parser//parser_prod.nit:5793,5--5797:20)"};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  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*/) /*TKwonce::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*TKwonce::parent=*/;
-  }
+  struct trace_t trace = {NULL, NULL, 6040, LOCATE_parser_prod___AAssertExpr___init_aassertexpr};
+  val_t variable[6];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Local variable */
+  variable[2] =  param1;
+  /* Register variable[3]: Local variable */
+  variable[3] =  param2;
+  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AAssertExpr].i]) return;
+  /* Register variable[4]: Method return value and escape marker */
+  CALL_parser_prod___AAssertExpr___empty_init(variable[0])(variable[0], init_table /*YYY*/) /*AAssertExpr::empty_init*/;
+  ATTR_parser_nodes___AAssertExpr____n_kwassert(variable[0]) /*AAssertExpr::_n_kwassert*/ =  variable[1] /*n_kwassert*/;
+  /* Register variable[5]: Result */
+  variable[5] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_kwassert*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_kwassert*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n_kwassert*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_kwassert*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n_kwassert*/)( variable[1] /*n_kwassert*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[5])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n_kwassert*/)( variable[1] /*n_kwassert*/, variable[0]) /*PNode::parent=*/;
+  }
+  ATTR_parser_nodes___AAssertExpr____n_id(variable[0]) /*AAssertExpr::_n_id*/ =  variable[2] /*n_id*/;
+  /* Register variable[5]: Result */
+  variable[5] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*n_id*/ ==  NIT_NULL /*null*/) || (( variable[2] /*n_id*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*n_id*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*n_id*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*n_id*/)( variable[2] /*n_id*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[5])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[2] /*n_id*/)( variable[2] /*n_id*/, variable[0]) /*PNode::parent=*/;
+  }
+  ATTR_parser_nodes___AAssertExpr____n_expr(variable[0]) /*AAssertExpr::_n_expr*/ =  variable[3] /*n_expr*/;
+  /* Register variable[5]: Result */
+  variable[5] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[3] /*n_expr*/ ==  NIT_NULL /*null*/) || (( variable[3] /*n_expr*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[3] /*n_expr*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[3] /*n_expr*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[3] /*n_expr*/)( variable[3] /*n_expr*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[5])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[3] /*n_expr*/)( variable[3] /*n_expr*/, variable[0]) /*PNode::parent=*/;
+  }
+  return_label525: while(false);
+  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AAssertExpr].i] = 1;
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AOnceExpr___n_expr__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AOnceExpr::n_expr= (src/parser//parser_prod.nit:5800,5--5804:20)"};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  variable0 =  param0;
-  ATTR_parser_nodes___AProxyExpr____n_expr( self) /*AOnceExpr::_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*/) /*PExpr::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PExpr::parent=*/;
+  struct trace_t trace = {NULL, NULL, 6130, LOCATE_parser_prod___AOnceExpr___n_expr__eq};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  ATTR_parser_nodes___AProxyExpr____n_expr(variable[0]) /*AProxyExpr::_n_expr*/ =  variable[1] /*n*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[0]) /*PNode::parent=*/;
   }
+  return_label526: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AOnceExpr___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, "parser_prod::AOnceExpr::empty_init (src/parser//parser_prod.nit:5808,5--27)"};
-  trace.prev = tracehead; tracehead = &trace;
-  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, "parser_prod::AOnceExpr::init_aonceexpr (src/parser//parser_prod.nit:5810,5--5821:22)"};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
+void parser_prod___AOnceExpr___n_kwonce__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 6123, LOCATE_parser_prod___AOnceExpr___n_kwonce__eq};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  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*/) /*TKwonce::==*/)))))));
-  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) /*TKwonce::parent=*/;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  ATTR_parser_nodes___AOnceExpr____n_kwonce(variable[0]) /*AOnceExpr::_n_kwonce*/ =  variable[1] /*n*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[0]) /*PNode::parent=*/;
   }
-  ATTR_parser_nodes___AProxyExpr____n_expr( self) /*AOnceExpr::_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*/) /*PExpr::==*/)))))));
-  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) /*PExpr::parent=*/;
-  }
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AOnceExpr].i] = 1;
+  return_label527: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AOnceExpr___replace_child(val_t  self, val_t  param0, val_t  param1) {
-  struct trace_t trace = {NULL, "parser_prod::AOnceExpr::replace_child (src/parser//parser_prod.nit:5825,5--5846:18)"};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  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*/) /*PNode::==*/)))))));
-  if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert failed: src/parser//parser_prod.nit:5827,9--32\n"); 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*/) /*TKwonce::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*PNode::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_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 failed: src/parser//parser_prod.nit:5831,3--30\n"); 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_label499;
-  }
-  variable2 = ATTR_parser_nodes___AProxyExpr____n_expr( self) /*AOnceExpr::_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*/) /*PExpr::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*PNode::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_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 failed: src/parser//parser_prod.nit:5841,3--28\n"); nit_exit(1);}
-      ATTR_parser_nodes___AProxyExpr____n_expr( self) /*AOnceExpr::_n_expr*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___AProxyExpr____n_expr( self) /*AOnceExpr::_n_expr*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label499;
+  struct trace_t trace = {NULL, NULL, 6156, LOCATE_parser_prod___AOnceExpr___replace_child};
+  val_t variable[5];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Local variable */
+  variable[2] =  param1;
+  /* Register variable[3]: Method return value and escape marker */
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AOnceExpr___replace_child, LOCATE_parser_prod, 6158); nit_exit(1);}
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___AOnceExpr____n_kwonce(variable[0]) /*AOnceExpr::_n_kwonce*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*PNode::parent=*/;
+      /* Register variable[4]: Result */
+      variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_TKwonce, ID_TKwonce)) /*cast TKwonce*/;
+      if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AOnceExpr___replace_child, LOCATE_parser_prod, 6162); nit_exit(1);}
+      ATTR_parser_nodes___AOnceExpr____n_kwonce(variable[0]) /*AOnceExpr::_n_kwonce*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      ATTR_parser_nodes___AOnceExpr____n_kwonce(variable[0]) /*AOnceExpr::_n_kwonce*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label528;
+  }
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___AProxyExpr____n_expr(variable[0]) /*AProxyExpr::_n_expr*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*PNode::parent=*/;
+      /* Register variable[4]: Result */
+      variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
+      if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AOnceExpr___replace_child, LOCATE_parser_prod, 6172); nit_exit(1);}
+      ATTR_parser_nodes___AProxyExpr____n_expr(variable[0]) /*AProxyExpr::_n_expr*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      ATTR_parser_nodes___AProxyExpr____n_expr(variable[0]) /*AProxyExpr::_n_expr*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label528;
   }
-  return_label499: while(false);
+  return_label528: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AOnceExpr___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AOnceExpr::visit_all (src/parser//parser_prod.nit:5850,5--5856:27)"};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  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*/) /*TKwonce::==*/)))))));
-  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) /*AOnceExpr::_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*/) /*PExpr::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AProxyExpr____n_expr( self) /*AOnceExpr::_n_expr*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
+  struct trace_t trace = {NULL, NULL, 6181, LOCATE_parser_prod___AOnceExpr___visit_all};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AOnceExpr____n_kwonce(variable[0]) /*AOnceExpr::_n_kwonce*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AOnceExpr____n_kwonce(variable[0]) /*AOnceExpr::_n_kwonce*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AProxyExpr____n_expr(variable[0]) /*AProxyExpr::_n_expr*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AProxyExpr____n_expr(variable[0]) /*AProxyExpr::_n_expr*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  return_label529: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AOnceExpr___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AOnceExpr::visit_all_reverse (src/parser//parser_prod.nit:5860,5--5866:27)"};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  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*/) /*TKwonce::==*/)))))));
-  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) /*AOnceExpr::_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*/) /*PExpr::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AProxyExpr____n_expr( self) /*AOnceExpr::_n_expr*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
+  struct trace_t trace = {NULL, NULL, 6191, LOCATE_parser_prod___AOnceExpr___visit_all_reverse};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AOnceExpr____n_kwonce(variable[0]) /*AOnceExpr::_n_kwonce*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AOnceExpr____n_kwonce(variable[0]) /*AOnceExpr::_n_kwonce*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AProxyExpr____n_expr(variable[0]) /*AProxyExpr::_n_expr*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AProxyExpr____n_expr(variable[0]) /*AProxyExpr::_n_expr*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  return_label530: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___ASendExpr___n_expr__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::ASendExpr::n_expr= (src/parser//parser_prod.nit:5871,5--5875:20)"};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___AOnceExpr___empty_init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 6138, LOCATE_parser_prod___AOnceExpr___empty_init};
+  val_t variable[2];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  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*/) /*PExpr::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PExpr::parent=*/;
-  }
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AOnceExpr].i]) return;
+  /* Register variable[1]: Method return value and escape marker */
+  return_label531: while(false);
+  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AOnceExpr].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser_prod___ASendExpr___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, "parser_prod::ASendExpr::empty_init (src/parser//parser_prod.nit:5879,5--27)"};
-  trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ASendExpr].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ASendExpr].i] = 1;
+void parser_prod___AOnceExpr___init_aonceexpr(val_t  self, val_t  param0, val_t  param1, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 6140, LOCATE_parser_prod___AOnceExpr___init_aonceexpr};
+  val_t variable[5];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Local variable */
+  variable[2] =  param1;
+  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AOnceExpr].i]) return;
+  /* Register variable[3]: Method return value and escape marker */
+  CALL_parser_prod___AOnceExpr___empty_init(variable[0])(variable[0], init_table /*YYY*/) /*AOnceExpr::empty_init*/;
+  ATTR_parser_nodes___AOnceExpr____n_kwonce(variable[0]) /*AOnceExpr::_n_kwonce*/ =  variable[1] /*n_kwonce*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_kwonce*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_kwonce*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n_kwonce*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_kwonce*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n_kwonce*/)( variable[1] /*n_kwonce*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n_kwonce*/)( variable[1] /*n_kwonce*/, variable[0]) /*PNode::parent=*/;
+  }
+  ATTR_parser_nodes___AProxyExpr____n_expr(variable[0]) /*AProxyExpr::_n_expr*/ =  variable[2] /*n_expr*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*n_expr*/ ==  NIT_NULL /*null*/) || (( variable[2] /*n_expr*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*n_expr*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*n_expr*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*n_expr*/)( variable[2] /*n_expr*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[2] /*n_expr*/)( variable[2] /*n_expr*/, variable[0]) /*PNode::parent=*/;
+  }
+  return_label532: while(false);
+  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AOnceExpr].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, "parser_prod::ASendExpr::init_asendexpr (src/parser//parser_prod.nit:5881,5--5887:22)"};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  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*/) /*PExpr::==*/)))))));
-  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) /*PExpr::parent=*/;
+void parser_prod___ASendExpr___n_expr__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 6202, LOCATE_parser_prod___ASendExpr___n_expr__eq};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  ATTR_parser_nodes___ASendExpr____n_expr(variable[0]) /*ASendExpr::_n_expr*/ =  variable[1] /*n*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[0]) /*PNode::parent=*/;
   }
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ASendExpr].i] = 1;
+  return_label533: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___ASendExpr___replace_child(val_t  self, val_t  param0, val_t  param1) {
-  struct trace_t trace = {NULL, "parser_prod::ASendExpr::replace_child (src/parser//parser_prod.nit:5891,5--5902:18)"};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  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*/) /*PNode::==*/)))))));
-  if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert failed: src/parser//parser_prod.nit:5893,9--32\n"); 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*/) /*PExpr::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*PNode::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_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 failed: src/parser//parser_prod.nit:5897,3--28\n"); 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_label505;
+  struct trace_t trace = {NULL, NULL, 6223, LOCATE_parser_prod___ASendExpr___replace_child};
+  val_t variable[5];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Local variable */
+  variable[2] =  param1;
+  /* Register variable[3]: Method return value and escape marker */
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ASendExpr___replace_child, LOCATE_parser_prod, 6225); nit_exit(1);}
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___ASendExpr____n_expr(variable[0]) /*ASendExpr::_n_expr*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*PNode::parent=*/;
+      /* Register variable[4]: Result */
+      variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
+      if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ASendExpr___replace_child, LOCATE_parser_prod, 6229); nit_exit(1);}
+      ATTR_parser_nodes___ASendExpr____n_expr(variable[0]) /*ASendExpr::_n_expr*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      ATTR_parser_nodes___ASendExpr____n_expr(variable[0]) /*ASendExpr::_n_expr*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label534;
   }
-  return_label505: while(false);
+  return_label534: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___ASendExpr___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::ASendExpr::visit_all (src/parser//parser_prod.nit:5906,5--5909:27)"};
-  val_t variable0;
-  val_t variable1;
+  struct trace_t trace = {NULL, NULL, 6238, LOCATE_parser_prod___ASendExpr___visit_all};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  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*/) /*PExpr::==*/)))))));
-  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*/;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___ASendExpr____n_expr(variable[0]) /*ASendExpr::_n_expr*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___ASendExpr____n_expr(variable[0]) /*ASendExpr::_n_expr*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
+  return_label535: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___ASendExpr___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::ASendExpr::visit_all_reverse (src/parser//parser_prod.nit:5913,5--5916:27)"};
-  val_t variable0;
-  val_t variable1;
+  struct trace_t trace = {NULL, NULL, 6245, LOCATE_parser_prod___ASendExpr___visit_all_reverse};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  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*/) /*PExpr::==*/)))))));
-  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*/;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___ASendExpr____n_expr(variable[0]) /*ASendExpr::_n_expr*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___ASendExpr____n_expr(variable[0]) /*ASendExpr::_n_expr*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
+  return_label536: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___ABinopExpr___n_expr__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::ABinopExpr::n_expr= (src/parser//parser_prod.nit:5921,5--5925:20)"};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___ASendExpr___empty_init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 6210, LOCATE_parser_prod___ASendExpr___empty_init};
+  val_t variable[2];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  variable0 =  param0;
-  ATTR_parser_nodes___ASendExpr____n_expr( self) /*ABinopExpr::_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*/) /*PExpr::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PExpr::parent=*/;
-  }
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ASendExpr].i]) return;
+  /* Register variable[1]: Method return value and escape marker */
+  return_label537: while(false);
+  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ASendExpr].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser_prod___ABinopExpr___n_expr2__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::ABinopExpr::n_expr2= (src/parser//parser_prod.nit:5928,5--5932:20)"};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___ASendExpr___init_asendexpr(val_t  self, val_t  param0, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 6212, LOCATE_parser_prod___ASendExpr___init_asendexpr};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  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*/) /*PExpr::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PExpr::parent=*/;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ASendExpr].i]) return;
+  /* Register variable[2]: Method return value and escape marker */
+  CALL_parser_prod___ASendExpr___empty_init(variable[0])(variable[0], init_table /*YYY*/) /*ASendExpr::empty_init*/;
+  ATTR_parser_nodes___ASendExpr____n_expr(variable[0]) /*ASendExpr::_n_expr*/ =  variable[1] /*n_expr*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_expr*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_expr*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n_expr*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_expr*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n_expr*/)( variable[1] /*n_expr*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n_expr*/)( variable[1] /*n_expr*/, variable[0]) /*PNode::parent=*/;
   }
+  return_label538: while(false);
+  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ASendExpr].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser_prod___ABinopExpr___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, "parser_prod::ABinopExpr::empty_init (src/parser//parser_prod.nit:5936,5--27)"};
+void parser_prod___ABinopExpr___n_expr__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 6253, LOCATE_parser_prod___ABinopExpr___n_expr__eq};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  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;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  ATTR_parser_nodes___ASendExpr____n_expr(variable[0]) /*ASendExpr::_n_expr*/ =  variable[1] /*n*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[0]) /*PNode::parent=*/;
+  }
+  return_label539: while(false);
   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, "parser_prod::ABinopExpr::init_abinopexpr (src/parser//parser_prod.nit:5938,5--5949:23)"};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  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) /*ABinopExpr::_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*/) /*PExpr::==*/)))))));
-  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) /*PExpr::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*/) /*PExpr::==*/)))))));
-  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) /*PExpr::parent=*/;
+void parser_prod___ABinopExpr___n_expr2__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 6260, LOCATE_parser_prod___ABinopExpr___n_expr2__eq};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  ATTR_parser_nodes___ABinopExpr____n_expr2(variable[0]) /*ABinopExpr::_n_expr2*/ =  variable[1] /*n*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[0]) /*PNode::parent=*/;
   }
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ABinopExpr].i] = 1;
+  return_label540: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___ABinopExpr___replace_child(val_t  self, val_t  param0, val_t  param1) {
-  struct trace_t trace = {NULL, "parser_prod::ABinopExpr::replace_child (src/parser//parser_prod.nit:5953,5--5974:18)"};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  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*/) /*PNode::==*/)))))));
-  if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert failed: src/parser//parser_prod.nit:5955,9--32\n"); nit_exit(1);}
-  variable2 = ATTR_parser_nodes___ASendExpr____n_expr( self) /*ABinopExpr::_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*/) /*PExpr::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*PNode::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_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 failed: src/parser//parser_prod.nit:5959,3--28\n"); nit_exit(1);}
-      ATTR_parser_nodes___ASendExpr____n_expr( self) /*ABinopExpr::_n_expr*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___ASendExpr____n_expr( self) /*ABinopExpr::_n_expr*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label512;
-  }
-  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*/) /*PExpr::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*PNode::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_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 failed: src/parser//parser_prod.nit:5969,3--28\n"); 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_label512;
+  struct trace_t trace = {NULL, NULL, 6286, LOCATE_parser_prod___ABinopExpr___replace_child};
+  val_t variable[5];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Local variable */
+  variable[2] =  param1;
+  /* Register variable[3]: Method return value and escape marker */
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ABinopExpr___replace_child, LOCATE_parser_prod, 6288); nit_exit(1);}
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___ASendExpr____n_expr(variable[0]) /*ASendExpr::_n_expr*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*PNode::parent=*/;
+      /* Register variable[4]: Result */
+      variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
+      if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ABinopExpr___replace_child, LOCATE_parser_prod, 6292); nit_exit(1);}
+      ATTR_parser_nodes___ASendExpr____n_expr(variable[0]) /*ASendExpr::_n_expr*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      ATTR_parser_nodes___ASendExpr____n_expr(variable[0]) /*ASendExpr::_n_expr*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label541;
+  }
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___ABinopExpr____n_expr2(variable[0]) /*ABinopExpr::_n_expr2*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*PNode::parent=*/;
+      /* Register variable[4]: Result */
+      variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
+      if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ABinopExpr___replace_child, LOCATE_parser_prod, 6302); nit_exit(1);}
+      ATTR_parser_nodes___ABinopExpr____n_expr2(variable[0]) /*ABinopExpr::_n_expr2*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      ATTR_parser_nodes___ABinopExpr____n_expr2(variable[0]) /*ABinopExpr::_n_expr2*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label541;
   }
-  return_label512: while(false);
+  return_label541: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___ABinopExpr___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::ABinopExpr::visit_all (src/parser//parser_prod.nit:5978,5--5984:28)"};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___ASendExpr____n_expr( self) /*ABinopExpr::_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*/) /*PExpr::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___ASendExpr____n_expr( self) /*ABinopExpr::_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*/) /*PExpr::==*/)))))));
-  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*/;
-  }
+  struct trace_t trace = {NULL, NULL, 6311, LOCATE_parser_prod___ABinopExpr___visit_all};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___ASendExpr____n_expr(variable[0]) /*ASendExpr::_n_expr*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___ASendExpr____n_expr(variable[0]) /*ASendExpr::_n_expr*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___ABinopExpr____n_expr2(variable[0]) /*ABinopExpr::_n_expr2*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___ABinopExpr____n_expr2(variable[0]) /*ABinopExpr::_n_expr2*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  return_label542: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___ABinopExpr___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::ABinopExpr::visit_all_reverse (src/parser//parser_prod.nit:5988,5--5994:28)"};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___ASendExpr____n_expr( self) /*ABinopExpr::_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*/) /*PExpr::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___ASendExpr____n_expr( self) /*ABinopExpr::_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*/) /*PExpr::==*/)))))));
-  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*/;
-  }
+  struct trace_t trace = {NULL, NULL, 6321, LOCATE_parser_prod___ABinopExpr___visit_all_reverse};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___ASendExpr____n_expr(variable[0]) /*ASendExpr::_n_expr*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___ASendExpr____n_expr(variable[0]) /*ASendExpr::_n_expr*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___ABinopExpr____n_expr2(variable[0]) /*ABinopExpr::_n_expr2*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___ABinopExpr____n_expr2(variable[0]) /*ABinopExpr::_n_expr2*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  return_label543: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AOrExpr___n_expr__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AOrExpr::n_expr= (src/parser//parser_prod.nit:5999,5--6003:20)"};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___ABinopExpr___empty_init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 6268, LOCATE_parser_prod___ABinopExpr___empty_init};
+  val_t variable[2];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  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*/) /*PExpr::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PExpr::parent=*/;
-  }
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ABinopExpr].i]) return;
+  /* Register variable[1]: Method return value and escape marker */
+  return_label544: while(false);
+  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ABinopExpr].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AOrExpr___n_expr2__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AOrExpr::n_expr2= (src/parser//parser_prod.nit:6006,5--6010:20)"};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  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*/) /*PExpr::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PExpr::parent=*/;
-  }
+void parser_prod___ABinopExpr___init_abinopexpr(val_t  self, val_t  param0, val_t  param1, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 6270, LOCATE_parser_prod___ABinopExpr___init_abinopexpr};
+  val_t variable[5];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Local variable */
+  variable[2] =  param1;
+  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ABinopExpr].i]) return;
+  /* Register variable[3]: Method return value and escape marker */
+  CALL_parser_prod___ABinopExpr___empty_init(variable[0])(variable[0], init_table /*YYY*/) /*ABinopExpr::empty_init*/;
+  ATTR_parser_nodes___ASendExpr____n_expr(variable[0]) /*ASendExpr::_n_expr*/ =  variable[1] /*n_expr*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_expr*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_expr*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n_expr*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_expr*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n_expr*/)( variable[1] /*n_expr*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n_expr*/)( variable[1] /*n_expr*/, variable[0]) /*PNode::parent=*/;
+  }
+  ATTR_parser_nodes___ABinopExpr____n_expr2(variable[0]) /*ABinopExpr::_n_expr2*/ =  variable[2] /*n_expr2*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*n_expr2*/ ==  NIT_NULL /*null*/) || (( variable[2] /*n_expr2*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*n_expr2*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*n_expr2*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*n_expr2*/)( variable[2] /*n_expr2*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[2] /*n_expr2*/)( variable[2] /*n_expr2*/, variable[0]) /*PNode::parent=*/;
+  }
+  return_label545: while(false);
+  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ABinopExpr].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AOrExpr___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, "parser_prod::AOrExpr::empty_init (src/parser//parser_prod.nit:6014,5--27)"};
+void parser_prod___AOrExpr___n_expr__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 6332, LOCATE_parser_prod___AOrExpr___n_expr__eq};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AOrExpr].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AOrExpr].i] = 1;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  ATTR_parser_nodes___AOrExpr____n_expr(variable[0]) /*AOrExpr::_n_expr*/ =  variable[1] /*n*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[0]) /*PNode::parent=*/;
+  }
+  return_label546: while(false);
   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, "parser_prod::AOrExpr::init_aorexpr (src/parser//parser_prod.nit:6016,5--6027:23)"};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  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*/) /*PExpr::==*/)))))));
-  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) /*PExpr::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*/) /*PExpr::==*/)))))));
-  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) /*PExpr::parent=*/;
+void parser_prod___AOrExpr___n_expr2__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 6339, LOCATE_parser_prod___AOrExpr___n_expr2__eq};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  ATTR_parser_nodes___AOrExpr____n_expr2(variable[0]) /*AOrExpr::_n_expr2*/ =  variable[1] /*n*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[0]) /*PNode::parent=*/;
   }
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AOrExpr].i] = 1;
+  return_label547: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AOrExpr___replace_child(val_t  self, val_t  param0, val_t  param1) {
-  struct trace_t trace = {NULL, "parser_prod::AOrExpr::replace_child (src/parser//parser_prod.nit:6031,5--6052:18)"};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  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*/) /*PNode::==*/)))))));
-  if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert failed: src/parser//parser_prod.nit:6033,9--32\n"); 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*/) /*PExpr::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*PNode::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_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 failed: src/parser//parser_prod.nit:6037,3--28\n"); 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_label519;
-  }
-  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*/) /*PExpr::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*PNode::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_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 failed: src/parser//parser_prod.nit:6047,3--28\n"); 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_label519;
+  struct trace_t trace = {NULL, NULL, 6365, LOCATE_parser_prod___AOrExpr___replace_child};
+  val_t variable[5];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Local variable */
+  variable[2] =  param1;
+  /* Register variable[3]: Method return value and escape marker */
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AOrExpr___replace_child, LOCATE_parser_prod, 6367); nit_exit(1);}
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___AOrExpr____n_expr(variable[0]) /*AOrExpr::_n_expr*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*PNode::parent=*/;
+      /* Register variable[4]: Result */
+      variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
+      if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AOrExpr___replace_child, LOCATE_parser_prod, 6371); nit_exit(1);}
+      ATTR_parser_nodes___AOrExpr____n_expr(variable[0]) /*AOrExpr::_n_expr*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      ATTR_parser_nodes___AOrExpr____n_expr(variable[0]) /*AOrExpr::_n_expr*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label548;
+  }
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___AOrExpr____n_expr2(variable[0]) /*AOrExpr::_n_expr2*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*PNode::parent=*/;
+      /* Register variable[4]: Result */
+      variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
+      if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AOrExpr___replace_child, LOCATE_parser_prod, 6381); nit_exit(1);}
+      ATTR_parser_nodes___AOrExpr____n_expr2(variable[0]) /*AOrExpr::_n_expr2*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      ATTR_parser_nodes___AOrExpr____n_expr2(variable[0]) /*AOrExpr::_n_expr2*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label548;
   }
-  return_label519: while(false);
+  return_label548: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AOrExpr___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AOrExpr::visit_all (src/parser//parser_prod.nit:6056,5--6062:28)"};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  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*/) /*PExpr::==*/)))))));
-  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*/) /*PExpr::==*/)))))));
-  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*/;
-  }
+  struct trace_t trace = {NULL, NULL, 6390, LOCATE_parser_prod___AOrExpr___visit_all};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AOrExpr____n_expr(variable[0]) /*AOrExpr::_n_expr*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AOrExpr____n_expr(variable[0]) /*AOrExpr::_n_expr*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AOrExpr____n_expr2(variable[0]) /*AOrExpr::_n_expr2*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AOrExpr____n_expr2(variable[0]) /*AOrExpr::_n_expr2*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  return_label549: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AOrExpr___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AOrExpr::visit_all_reverse (src/parser//parser_prod.nit:6066,5--6072:28)"};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  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*/) /*PExpr::==*/)))))));
-  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*/) /*PExpr::==*/)))))));
-  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*/;
-  }
+  struct trace_t trace = {NULL, NULL, 6400, LOCATE_parser_prod___AOrExpr___visit_all_reverse};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AOrExpr____n_expr(variable[0]) /*AOrExpr::_n_expr*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AOrExpr____n_expr(variable[0]) /*AOrExpr::_n_expr*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AOrExpr____n_expr2(variable[0]) /*AOrExpr::_n_expr2*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AOrExpr____n_expr2(variable[0]) /*AOrExpr::_n_expr2*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  return_label550: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AAndExpr___n_expr__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AAndExpr::n_expr= (src/parser//parser_prod.nit:6077,5--6081:20)"};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___AOrExpr___empty_init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 6347, LOCATE_parser_prod___AOrExpr___empty_init};
+  val_t variable[2];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  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*/) /*PExpr::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PExpr::parent=*/;
-  }
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AOrExpr].i]) return;
+  /* Register variable[1]: Method return value and escape marker */
+  return_label551: while(false);
+  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AOrExpr].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AAndExpr___n_expr2__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AAndExpr::n_expr2= (src/parser//parser_prod.nit:6084,5--6088:20)"};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  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*/) /*PExpr::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PExpr::parent=*/;
-  }
+void parser_prod___AOrExpr___init_aorexpr(val_t  self, val_t  param0, val_t  param1, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 6349, LOCATE_parser_prod___AOrExpr___init_aorexpr};
+  val_t variable[5];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Local variable */
+  variable[2] =  param1;
+  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AOrExpr].i]) return;
+  /* Register variable[3]: Method return value and escape marker */
+  CALL_parser_prod___AOrExpr___empty_init(variable[0])(variable[0], init_table /*YYY*/) /*AOrExpr::empty_init*/;
+  ATTR_parser_nodes___AOrExpr____n_expr(variable[0]) /*AOrExpr::_n_expr*/ =  variable[1] /*n_expr*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_expr*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_expr*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n_expr*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_expr*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n_expr*/)( variable[1] /*n_expr*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n_expr*/)( variable[1] /*n_expr*/, variable[0]) /*PNode::parent=*/;
+  }
+  ATTR_parser_nodes___AOrExpr____n_expr2(variable[0]) /*AOrExpr::_n_expr2*/ =  variable[2] /*n_expr2*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*n_expr2*/ ==  NIT_NULL /*null*/) || (( variable[2] /*n_expr2*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*n_expr2*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*n_expr2*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*n_expr2*/)( variable[2] /*n_expr2*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[2] /*n_expr2*/)( variable[2] /*n_expr2*/, variable[0]) /*PNode::parent=*/;
+  }
+  return_label552: while(false);
+  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AOrExpr].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AAndExpr___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, "parser_prod::AAndExpr::empty_init (src/parser//parser_prod.nit:6092,5--27)"};
+void parser_prod___AAndExpr___n_expr__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 6411, LOCATE_parser_prod___AAndExpr___n_expr__eq};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AAndExpr].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AAndExpr].i] = 1;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  ATTR_parser_nodes___AAndExpr____n_expr(variable[0]) /*AAndExpr::_n_expr*/ =  variable[1] /*n*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[0]) /*PNode::parent=*/;
+  }
+  return_label553: while(false);
   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, "parser_prod::AAndExpr::init_aandexpr (src/parser//parser_prod.nit:6094,5--6105:23)"};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  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*/) /*PExpr::==*/)))))));
-  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) /*PExpr::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*/) /*PExpr::==*/)))))));
-  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) /*PExpr::parent=*/;
+void parser_prod___AAndExpr___n_expr2__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 6418, LOCATE_parser_prod___AAndExpr___n_expr2__eq};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  ATTR_parser_nodes___AAndExpr____n_expr2(variable[0]) /*AAndExpr::_n_expr2*/ =  variable[1] /*n*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[0]) /*PNode::parent=*/;
   }
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AAndExpr].i] = 1;
+  return_label554: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AAndExpr___replace_child(val_t  self, val_t  param0, val_t  param1) {
-  struct trace_t trace = {NULL, "parser_prod::AAndExpr::replace_child (src/parser//parser_prod.nit:6109,5--6130:18)"};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  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*/) /*PNode::==*/)))))));
-  if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert failed: src/parser//parser_prod.nit:6111,9--32\n"); 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*/) /*PExpr::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*PNode::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_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 failed: src/parser//parser_prod.nit:6115,3--28\n"); 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_label526;
-  }
-  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*/) /*PExpr::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*PNode::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_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 failed: src/parser//parser_prod.nit:6125,3--28\n"); 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_label526;
+  struct trace_t trace = {NULL, NULL, 6444, LOCATE_parser_prod___AAndExpr___replace_child};
+  val_t variable[5];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Local variable */
+  variable[2] =  param1;
+  /* Register variable[3]: Method return value and escape marker */
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AAndExpr___replace_child, LOCATE_parser_prod, 6446); nit_exit(1);}
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___AAndExpr____n_expr(variable[0]) /*AAndExpr::_n_expr*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*PNode::parent=*/;
+      /* Register variable[4]: Result */
+      variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
+      if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AAndExpr___replace_child, LOCATE_parser_prod, 6450); nit_exit(1);}
+      ATTR_parser_nodes___AAndExpr____n_expr(variable[0]) /*AAndExpr::_n_expr*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      ATTR_parser_nodes___AAndExpr____n_expr(variable[0]) /*AAndExpr::_n_expr*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label555;
+  }
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___AAndExpr____n_expr2(variable[0]) /*AAndExpr::_n_expr2*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*PNode::parent=*/;
+      /* Register variable[4]: Result */
+      variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
+      if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AAndExpr___replace_child, LOCATE_parser_prod, 6460); nit_exit(1);}
+      ATTR_parser_nodes___AAndExpr____n_expr2(variable[0]) /*AAndExpr::_n_expr2*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      ATTR_parser_nodes___AAndExpr____n_expr2(variable[0]) /*AAndExpr::_n_expr2*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label555;
   }
-  return_label526: while(false);
+  return_label555: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AAndExpr___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AAndExpr::visit_all (src/parser//parser_prod.nit:6134,5--6140:28)"};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  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*/) /*PExpr::==*/)))))));
-  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*/) /*PExpr::==*/)))))));
-  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*/;
-  }
+  struct trace_t trace = {NULL, NULL, 6469, LOCATE_parser_prod___AAndExpr___visit_all};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AAndExpr____n_expr(variable[0]) /*AAndExpr::_n_expr*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AAndExpr____n_expr(variable[0]) /*AAndExpr::_n_expr*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AAndExpr____n_expr2(variable[0]) /*AAndExpr::_n_expr2*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AAndExpr____n_expr2(variable[0]) /*AAndExpr::_n_expr2*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  return_label556: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AAndExpr___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AAndExpr::visit_all_reverse (src/parser//parser_prod.nit:6144,5--6150:28)"};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  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*/) /*PExpr::==*/)))))));
-  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*/) /*PExpr::==*/)))))));
-  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*/;
-  }
+  struct trace_t trace = {NULL, NULL, 6479, LOCATE_parser_prod___AAndExpr___visit_all_reverse};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AAndExpr____n_expr(variable[0]) /*AAndExpr::_n_expr*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AAndExpr____n_expr(variable[0]) /*AAndExpr::_n_expr*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AAndExpr____n_expr2(variable[0]) /*AAndExpr::_n_expr2*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AAndExpr____n_expr2(variable[0]) /*AAndExpr::_n_expr2*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  return_label557: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___ANotExpr___n_kwnot__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::ANotExpr::n_kwnot= (src/parser//parser_prod.nit:6155,5--6159:20)"};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___AAndExpr___empty_init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 6426, LOCATE_parser_prod___AAndExpr___empty_init};
+  val_t variable[2];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  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*/) /*TKwnot::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*TKwnot::parent=*/;
-  }
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AAndExpr].i]) return;
+  /* Register variable[1]: Method return value and escape marker */
+  return_label558: while(false);
+  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AAndExpr].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser_prod___ANotExpr___n_expr__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::ANotExpr::n_expr= (src/parser//parser_prod.nit:6162,5--6166:20)"};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  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*/) /*PExpr::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PExpr::parent=*/;
-  }
+void parser_prod___AAndExpr___init_aandexpr(val_t  self, val_t  param0, val_t  param1, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 6428, LOCATE_parser_prod___AAndExpr___init_aandexpr};
+  val_t variable[5];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Local variable */
+  variable[2] =  param1;
+  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AAndExpr].i]) return;
+  /* Register variable[3]: Method return value and escape marker */
+  CALL_parser_prod___AAndExpr___empty_init(variable[0])(variable[0], init_table /*YYY*/) /*AAndExpr::empty_init*/;
+  ATTR_parser_nodes___AAndExpr____n_expr(variable[0]) /*AAndExpr::_n_expr*/ =  variable[1] /*n_expr*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_expr*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_expr*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n_expr*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_expr*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n_expr*/)( variable[1] /*n_expr*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n_expr*/)( variable[1] /*n_expr*/, variable[0]) /*PNode::parent=*/;
+  }
+  ATTR_parser_nodes___AAndExpr____n_expr2(variable[0]) /*AAndExpr::_n_expr2*/ =  variable[2] /*n_expr2*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*n_expr2*/ ==  NIT_NULL /*null*/) || (( variable[2] /*n_expr2*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*n_expr2*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*n_expr2*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*n_expr2*/)( variable[2] /*n_expr2*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[2] /*n_expr2*/)( variable[2] /*n_expr2*/, variable[0]) /*PNode::parent=*/;
+  }
+  return_label559: while(false);
+  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AAndExpr].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser_prod___ANotExpr___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, "parser_prod::ANotExpr::empty_init (src/parser//parser_prod.nit:6170,5--27)"};
+void parser_prod___ANotExpr___n_kwnot__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 6490, LOCATE_parser_prod___ANotExpr___n_kwnot__eq};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ANotExpr].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ANotExpr].i] = 1;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  ATTR_parser_nodes___ANotExpr____n_kwnot(variable[0]) /*ANotExpr::_n_kwnot*/ =  variable[1] /*n*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[0]) /*PNode::parent=*/;
+  }
+  return_label560: while(false);
   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, "parser_prod::ANotExpr::init_anotexpr (src/parser//parser_prod.nit:6172,5--6183:22)"};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  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*/) /*TKwnot::==*/)))))));
-  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) /*TKwnot::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*/) /*PExpr::==*/)))))));
-  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) /*PExpr::parent=*/;
+void parser_prod___ANotExpr___n_expr__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 6497, LOCATE_parser_prod___ANotExpr___n_expr__eq};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  ATTR_parser_nodes___ANotExpr____n_expr(variable[0]) /*ANotExpr::_n_expr*/ =  variable[1] /*n*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[0]) /*PNode::parent=*/;
   }
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ANotExpr].i] = 1;
+  return_label561: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___ANotExpr___replace_child(val_t  self, val_t  param0, val_t  param1) {
-  struct trace_t trace = {NULL, "parser_prod::ANotExpr::replace_child (src/parser//parser_prod.nit:6187,5--6208:18)"};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  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*/) /*PNode::==*/)))))));
-  if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert failed: src/parser//parser_prod.nit:6189,9--32\n"); 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*/) /*TKwnot::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*PNode::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_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 failed: src/parser//parser_prod.nit:6193,3--29\n"); 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_label533;
-  }
-  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*/) /*PExpr::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*PNode::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_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 failed: src/parser//parser_prod.nit:6203,3--28\n"); 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_label533;
+  struct trace_t trace = {NULL, NULL, 6523, LOCATE_parser_prod___ANotExpr___replace_child};
+  val_t variable[5];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Local variable */
+  variable[2] =  param1;
+  /* Register variable[3]: Method return value and escape marker */
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ANotExpr___replace_child, LOCATE_parser_prod, 6525); nit_exit(1);}
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___ANotExpr____n_kwnot(variable[0]) /*ANotExpr::_n_kwnot*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*PNode::parent=*/;
+      /* Register variable[4]: Result */
+      variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_TKwnot, ID_TKwnot)) /*cast TKwnot*/;
+      if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ANotExpr___replace_child, LOCATE_parser_prod, 6529); nit_exit(1);}
+      ATTR_parser_nodes___ANotExpr____n_kwnot(variable[0]) /*ANotExpr::_n_kwnot*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      ATTR_parser_nodes___ANotExpr____n_kwnot(variable[0]) /*ANotExpr::_n_kwnot*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label562;
+  }
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___ANotExpr____n_expr(variable[0]) /*ANotExpr::_n_expr*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*PNode::parent=*/;
+      /* Register variable[4]: Result */
+      variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
+      if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ANotExpr___replace_child, LOCATE_parser_prod, 6539); nit_exit(1);}
+      ATTR_parser_nodes___ANotExpr____n_expr(variable[0]) /*ANotExpr::_n_expr*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      ATTR_parser_nodes___ANotExpr____n_expr(variable[0]) /*ANotExpr::_n_expr*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label562;
   }
-  return_label533: while(false);
+  return_label562: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___ANotExpr___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::ANotExpr::visit_all (src/parser//parser_prod.nit:6212,5--6218:27)"};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  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*/) /*TKwnot::==*/)))))));
-  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*/) /*PExpr::==*/)))))));
-  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*/;
-  }
+  struct trace_t trace = {NULL, NULL, 6548, LOCATE_parser_prod___ANotExpr___visit_all};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___ANotExpr____n_kwnot(variable[0]) /*ANotExpr::_n_kwnot*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___ANotExpr____n_kwnot(variable[0]) /*ANotExpr::_n_kwnot*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___ANotExpr____n_expr(variable[0]) /*ANotExpr::_n_expr*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___ANotExpr____n_expr(variable[0]) /*ANotExpr::_n_expr*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  return_label563: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___ANotExpr___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::ANotExpr::visit_all_reverse (src/parser//parser_prod.nit:6222,5--6228:27)"};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  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*/) /*TKwnot::==*/)))))));
-  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*/) /*PExpr::==*/)))))));
-  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*/;
-  }
+  struct trace_t trace = {NULL, NULL, 6558, LOCATE_parser_prod___ANotExpr___visit_all_reverse};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___ANotExpr____n_kwnot(variable[0]) /*ANotExpr::_n_kwnot*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___ANotExpr____n_kwnot(variable[0]) /*ANotExpr::_n_kwnot*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___ANotExpr____n_expr(variable[0]) /*ANotExpr::_n_expr*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___ANotExpr____n_expr(variable[0]) /*ANotExpr::_n_expr*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  return_label564: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AEqExpr___n_expr__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AEqExpr::n_expr= (src/parser//parser_prod.nit:6233,5--6237:20)"};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___ANotExpr___empty_init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 6505, LOCATE_parser_prod___ANotExpr___empty_init};
+  val_t variable[2];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  variable0 =  param0;
-  ATTR_parser_nodes___ASendExpr____n_expr( self) /*AEqExpr::_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*/) /*PExpr::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PExpr::parent=*/;
-  }
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ANotExpr].i]) return;
+  /* Register variable[1]: Method return value and escape marker */
+  return_label565: while(false);
+  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ANotExpr].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AEqExpr___n_expr2__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AEqExpr::n_expr2= (src/parser//parser_prod.nit:6240,5--6244:20)"};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  variable0 =  param0;
-  ATTR_parser_nodes___ABinopExpr____n_expr2( self) /*AEqExpr::_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*/) /*PExpr::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PExpr::parent=*/;
-  }
+void parser_prod___ANotExpr___init_anotexpr(val_t  self, val_t  param0, val_t  param1, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 6507, LOCATE_parser_prod___ANotExpr___init_anotexpr};
+  val_t variable[5];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Local variable */
+  variable[2] =  param1;
+  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ANotExpr].i]) return;
+  /* Register variable[3]: Method return value and escape marker */
+  CALL_parser_prod___ANotExpr___empty_init(variable[0])(variable[0], init_table /*YYY*/) /*ANotExpr::empty_init*/;
+  ATTR_parser_nodes___ANotExpr____n_kwnot(variable[0]) /*ANotExpr::_n_kwnot*/ =  variable[1] /*n_kwnot*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_kwnot*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_kwnot*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n_kwnot*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_kwnot*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n_kwnot*/)( variable[1] /*n_kwnot*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n_kwnot*/)( variable[1] /*n_kwnot*/, variable[0]) /*PNode::parent=*/;
+  }
+  ATTR_parser_nodes___ANotExpr____n_expr(variable[0]) /*ANotExpr::_n_expr*/ =  variable[2] /*n_expr*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*n_expr*/ ==  NIT_NULL /*null*/) || (( variable[2] /*n_expr*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*n_expr*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*n_expr*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*n_expr*/)( variable[2] /*n_expr*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[2] /*n_expr*/)( variable[2] /*n_expr*/, variable[0]) /*PNode::parent=*/;
+  }
+  return_label566: while(false);
+  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ANotExpr].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AEqExpr___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, "parser_prod::AEqExpr::empty_init (src/parser//parser_prod.nit:6248,5--27)"};
+void parser_prod___AEqExpr___n_expr__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 6569, LOCATE_parser_prod___AEqExpr___n_expr__eq};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  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;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  ATTR_parser_nodes___ASendExpr____n_expr(variable[0]) /*ASendExpr::_n_expr*/ =  variable[1] /*n*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[0]) /*PNode::parent=*/;
+  }
+  return_label567: while(false);
   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, "parser_prod::AEqExpr::init_aeqexpr (src/parser//parser_prod.nit:6250,5--6261:23)"};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  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) /*AEqExpr::_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*/) /*PExpr::==*/)))))));
-  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) /*PExpr::parent=*/;
-  }
-  ATTR_parser_nodes___ABinopExpr____n_expr2( self) /*AEqExpr::_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*/) /*PExpr::==*/)))))));
-  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) /*PExpr::parent=*/;
+void parser_prod___AEqExpr___n_expr2__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 6576, LOCATE_parser_prod___AEqExpr___n_expr2__eq};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  ATTR_parser_nodes___ABinopExpr____n_expr2(variable[0]) /*ABinopExpr::_n_expr2*/ =  variable[1] /*n*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[0]) /*PNode::parent=*/;
   }
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AEqExpr].i] = 1;
+  return_label568: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AEqExpr___replace_child(val_t  self, val_t  param0, val_t  param1) {
-  struct trace_t trace = {NULL, "parser_prod::AEqExpr::replace_child (src/parser//parser_prod.nit:6265,5--6286:18)"};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  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*/) /*PNode::==*/)))))));
-  if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert failed: src/parser//parser_prod.nit:6267,9--32\n"); nit_exit(1);}
-  variable2 = ATTR_parser_nodes___ASendExpr____n_expr( self) /*AEqExpr::_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*/) /*PExpr::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*PNode::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_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 failed: src/parser//parser_prod.nit:6271,3--28\n"); nit_exit(1);}
-      ATTR_parser_nodes___ASendExpr____n_expr( self) /*AEqExpr::_n_expr*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___ASendExpr____n_expr( self) /*AEqExpr::_n_expr*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label540;
-  }
-  variable2 = ATTR_parser_nodes___ABinopExpr____n_expr2( self) /*AEqExpr::_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*/) /*PExpr::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*PNode::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_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 failed: src/parser//parser_prod.nit:6281,3--28\n"); nit_exit(1);}
-      ATTR_parser_nodes___ABinopExpr____n_expr2( self) /*AEqExpr::_n_expr2*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___ABinopExpr____n_expr2( self) /*AEqExpr::_n_expr2*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label540;
+  struct trace_t trace = {NULL, NULL, 6602, LOCATE_parser_prod___AEqExpr___replace_child};
+  val_t variable[5];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Local variable */
+  variable[2] =  param1;
+  /* Register variable[3]: Method return value and escape marker */
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AEqExpr___replace_child, LOCATE_parser_prod, 6604); nit_exit(1);}
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___ASendExpr____n_expr(variable[0]) /*ASendExpr::_n_expr*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*PNode::parent=*/;
+      /* Register variable[4]: Result */
+      variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
+      if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AEqExpr___replace_child, LOCATE_parser_prod, 6608); nit_exit(1);}
+      ATTR_parser_nodes___ASendExpr____n_expr(variable[0]) /*ASendExpr::_n_expr*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      ATTR_parser_nodes___ASendExpr____n_expr(variable[0]) /*ASendExpr::_n_expr*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label569;
+  }
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___ABinopExpr____n_expr2(variable[0]) /*ABinopExpr::_n_expr2*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*PNode::parent=*/;
+      /* Register variable[4]: Result */
+      variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
+      if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AEqExpr___replace_child, LOCATE_parser_prod, 6618); nit_exit(1);}
+      ATTR_parser_nodes___ABinopExpr____n_expr2(variable[0]) /*ABinopExpr::_n_expr2*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      ATTR_parser_nodes___ABinopExpr____n_expr2(variable[0]) /*ABinopExpr::_n_expr2*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label569;
   }
-  return_label540: while(false);
+  return_label569: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AEqExpr___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AEqExpr::visit_all (src/parser//parser_prod.nit:6290,5--6296:28)"};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___ASendExpr____n_expr( self) /*AEqExpr::_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*/) /*PExpr::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___ASendExpr____n_expr( self) /*AEqExpr::_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) /*AEqExpr::_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*/) /*PExpr::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___ABinopExpr____n_expr2( self) /*AEqExpr::_n_expr2*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
+  struct trace_t trace = {NULL, NULL, 6627, LOCATE_parser_prod___AEqExpr___visit_all};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___ASendExpr____n_expr(variable[0]) /*ASendExpr::_n_expr*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___ASendExpr____n_expr(variable[0]) /*ASendExpr::_n_expr*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___ABinopExpr____n_expr2(variable[0]) /*ABinopExpr::_n_expr2*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___ABinopExpr____n_expr2(variable[0]) /*ABinopExpr::_n_expr2*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  return_label570: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AEqExpr___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AEqExpr::visit_all_reverse (src/parser//parser_prod.nit:6300,5--6306:28)"};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___ASendExpr____n_expr( self) /*AEqExpr::_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*/) /*PExpr::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___ASendExpr____n_expr( self) /*AEqExpr::_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) /*AEqExpr::_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*/) /*PExpr::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___ABinopExpr____n_expr2( self) /*AEqExpr::_n_expr2*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
+  struct trace_t trace = {NULL, NULL, 6637, LOCATE_parser_prod___AEqExpr___visit_all_reverse};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___ASendExpr____n_expr(variable[0]) /*ASendExpr::_n_expr*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___ASendExpr____n_expr(variable[0]) /*ASendExpr::_n_expr*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___ABinopExpr____n_expr2(variable[0]) /*ABinopExpr::_n_expr2*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___ABinopExpr____n_expr2(variable[0]) /*ABinopExpr::_n_expr2*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  return_label571: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AEeExpr___n_expr__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AEeExpr::n_expr= (src/parser//parser_prod.nit:6311,5--6315:20)"};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___AEqExpr___empty_init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 6584, LOCATE_parser_prod___AEqExpr___empty_init};
+  val_t variable[2];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  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*/) /*PExpr::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PExpr::parent=*/;
-  }
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AEqExpr].i]) return;
+  /* Register variable[1]: Method return value and escape marker */
+  return_label572: while(false);
+  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AEqExpr].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AEeExpr___n_expr2__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AEeExpr::n_expr2= (src/parser//parser_prod.nit:6318,5--6322:20)"};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  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*/) /*PExpr::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PExpr::parent=*/;
-  }
+void parser_prod___AEqExpr___init_aeqexpr(val_t  self, val_t  param0, val_t  param1, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 6586, LOCATE_parser_prod___AEqExpr___init_aeqexpr};
+  val_t variable[5];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Local variable */
+  variable[2] =  param1;
+  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AEqExpr].i]) return;
+  /* Register variable[3]: Method return value and escape marker */
+  CALL_parser_prod___AEqExpr___empty_init(variable[0])(variable[0], init_table /*YYY*/) /*AEqExpr::empty_init*/;
+  ATTR_parser_nodes___ASendExpr____n_expr(variable[0]) /*ASendExpr::_n_expr*/ =  variable[1] /*n_expr*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_expr*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_expr*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n_expr*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_expr*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n_expr*/)( variable[1] /*n_expr*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n_expr*/)( variable[1] /*n_expr*/, variable[0]) /*PNode::parent=*/;
+  }
+  ATTR_parser_nodes___ABinopExpr____n_expr2(variable[0]) /*ABinopExpr::_n_expr2*/ =  variable[2] /*n_expr2*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*n_expr2*/ ==  NIT_NULL /*null*/) || (( variable[2] /*n_expr2*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*n_expr2*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*n_expr2*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*n_expr2*/)( variable[2] /*n_expr2*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[2] /*n_expr2*/)( variable[2] /*n_expr2*/, variable[0]) /*PNode::parent=*/;
+  }
+  return_label573: while(false);
+  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AEqExpr].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AEeExpr___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, "parser_prod::AEeExpr::empty_init (src/parser//parser_prod.nit:6326,5--27)"};
+void parser_prod___AEeExpr___n_expr__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 6648, LOCATE_parser_prod___AEeExpr___n_expr__eq};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AEeExpr].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AEeExpr].i] = 1;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  ATTR_parser_nodes___AEeExpr____n_expr(variable[0]) /*AEeExpr::_n_expr*/ =  variable[1] /*n*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[0]) /*PNode::parent=*/;
+  }
+  return_label574: while(false);
   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, "parser_prod::AEeExpr::init_aeeexpr (src/parser//parser_prod.nit:6328,5--6339:23)"};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  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*/) /*PExpr::==*/)))))));
-  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) /*PExpr::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*/) /*PExpr::==*/)))))));
-  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) /*PExpr::parent=*/;
+void parser_prod___AEeExpr___n_expr2__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 6655, LOCATE_parser_prod___AEeExpr___n_expr2__eq};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  ATTR_parser_nodes___AEeExpr____n_expr2(variable[0]) /*AEeExpr::_n_expr2*/ =  variable[1] /*n*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[0]) /*PNode::parent=*/;
   }
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AEeExpr].i] = 1;
+  return_label575: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AEeExpr___replace_child(val_t  self, val_t  param0, val_t  param1) {
-  struct trace_t trace = {NULL, "parser_prod::AEeExpr::replace_child (src/parser//parser_prod.nit:6343,5--6364:18)"};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  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*/) /*PNode::==*/)))))));
-  if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert failed: src/parser//parser_prod.nit:6345,9--32\n"); 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*/) /*PExpr::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*PNode::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_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 failed: src/parser//parser_prod.nit:6349,3--28\n"); 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_label547;
-  }
-  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*/) /*PExpr::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*PNode::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_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 failed: src/parser//parser_prod.nit:6359,3--28\n"); 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_label547;
+  struct trace_t trace = {NULL, NULL, 6681, LOCATE_parser_prod___AEeExpr___replace_child};
+  val_t variable[5];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Local variable */
+  variable[2] =  param1;
+  /* Register variable[3]: Method return value and escape marker */
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AEeExpr___replace_child, LOCATE_parser_prod, 6683); nit_exit(1);}
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___AEeExpr____n_expr(variable[0]) /*AEeExpr::_n_expr*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*PNode::parent=*/;
+      /* Register variable[4]: Result */
+      variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
+      if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AEeExpr___replace_child, LOCATE_parser_prod, 6687); nit_exit(1);}
+      ATTR_parser_nodes___AEeExpr____n_expr(variable[0]) /*AEeExpr::_n_expr*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      ATTR_parser_nodes___AEeExpr____n_expr(variable[0]) /*AEeExpr::_n_expr*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label576;
+  }
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___AEeExpr____n_expr2(variable[0]) /*AEeExpr::_n_expr2*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*PNode::parent=*/;
+      /* Register variable[4]: Result */
+      variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
+      if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AEeExpr___replace_child, LOCATE_parser_prod, 6697); nit_exit(1);}
+      ATTR_parser_nodes___AEeExpr____n_expr2(variable[0]) /*AEeExpr::_n_expr2*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      ATTR_parser_nodes___AEeExpr____n_expr2(variable[0]) /*AEeExpr::_n_expr2*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label576;
   }
-  return_label547: while(false);
+  return_label576: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AEeExpr___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AEeExpr::visit_all (src/parser//parser_prod.nit:6368,5--6374:28)"};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  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*/) /*PExpr::==*/)))))));
-  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*/) /*PExpr::==*/)))))));
-  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*/;
-  }
+  struct trace_t trace = {NULL, NULL, 6706, LOCATE_parser_prod___AEeExpr___visit_all};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AEeExpr____n_expr(variable[0]) /*AEeExpr::_n_expr*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AEeExpr____n_expr(variable[0]) /*AEeExpr::_n_expr*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AEeExpr____n_expr2(variable[0]) /*AEeExpr::_n_expr2*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AEeExpr____n_expr2(variable[0]) /*AEeExpr::_n_expr2*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  return_label577: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AEeExpr___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AEeExpr::visit_all_reverse (src/parser//parser_prod.nit:6378,5--6384:28)"};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  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*/) /*PExpr::==*/)))))));
-  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*/) /*PExpr::==*/)))))));
-  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*/;
-  }
+  struct trace_t trace = {NULL, NULL, 6716, LOCATE_parser_prod___AEeExpr___visit_all_reverse};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AEeExpr____n_expr(variable[0]) /*AEeExpr::_n_expr*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AEeExpr____n_expr(variable[0]) /*AEeExpr::_n_expr*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AEeExpr____n_expr2(variable[0]) /*AEeExpr::_n_expr2*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AEeExpr____n_expr2(variable[0]) /*AEeExpr::_n_expr2*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  return_label578: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___ANeExpr___n_expr__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::ANeExpr::n_expr= (src/parser//parser_prod.nit:6389,5--6393:20)"};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___AEeExpr___empty_init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 6663, LOCATE_parser_prod___AEeExpr___empty_init};
+  val_t variable[2];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  variable0 =  param0;
-  ATTR_parser_nodes___ASendExpr____n_expr( self) /*ANeExpr::_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*/) /*PExpr::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PExpr::parent=*/;
-  }
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AEeExpr].i]) return;
+  /* Register variable[1]: Method return value and escape marker */
+  return_label579: while(false);
+  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AEeExpr].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser_prod___ANeExpr___n_expr2__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::ANeExpr::n_expr2= (src/parser//parser_prod.nit:6396,5--6400:20)"};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  variable0 =  param0;
-  ATTR_parser_nodes___ABinopExpr____n_expr2( self) /*ANeExpr::_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*/) /*PExpr::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PExpr::parent=*/;
-  }
+void parser_prod___AEeExpr___init_aeeexpr(val_t  self, val_t  param0, val_t  param1, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 6665, LOCATE_parser_prod___AEeExpr___init_aeeexpr};
+  val_t variable[5];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Local variable */
+  variable[2] =  param1;
+  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AEeExpr].i]) return;
+  /* Register variable[3]: Method return value and escape marker */
+  CALL_parser_prod___AEeExpr___empty_init(variable[0])(variable[0], init_table /*YYY*/) /*AEeExpr::empty_init*/;
+  ATTR_parser_nodes___AEeExpr____n_expr(variable[0]) /*AEeExpr::_n_expr*/ =  variable[1] /*n_expr*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_expr*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_expr*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n_expr*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_expr*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n_expr*/)( variable[1] /*n_expr*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n_expr*/)( variable[1] /*n_expr*/, variable[0]) /*PNode::parent=*/;
+  }
+  ATTR_parser_nodes___AEeExpr____n_expr2(variable[0]) /*AEeExpr::_n_expr2*/ =  variable[2] /*n_expr2*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*n_expr2*/ ==  NIT_NULL /*null*/) || (( variable[2] /*n_expr2*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*n_expr2*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*n_expr2*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*n_expr2*/)( variable[2] /*n_expr2*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[2] /*n_expr2*/)( variable[2] /*n_expr2*/, variable[0]) /*PNode::parent=*/;
+  }
+  return_label580: while(false);
+  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AEeExpr].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser_prod___ANeExpr___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, "parser_prod::ANeExpr::empty_init (src/parser//parser_prod.nit:6404,5--27)"};
+void parser_prod___ANeExpr___n_expr__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 6727, LOCATE_parser_prod___ANeExpr___n_expr__eq};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  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;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  ATTR_parser_nodes___ASendExpr____n_expr(variable[0]) /*ASendExpr::_n_expr*/ =  variable[1] /*n*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[0]) /*PNode::parent=*/;
+  }
+  return_label581: while(false);
   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, "parser_prod::ANeExpr::init_aneexpr (src/parser//parser_prod.nit:6406,5--6417:23)"};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  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) /*ANeExpr::_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*/) /*PExpr::==*/)))))));
-  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) /*PExpr::parent=*/;
-  }
-  ATTR_parser_nodes___ABinopExpr____n_expr2( self) /*ANeExpr::_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*/) /*PExpr::==*/)))))));
-  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) /*PExpr::parent=*/;
+void parser_prod___ANeExpr___n_expr2__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 6734, LOCATE_parser_prod___ANeExpr___n_expr2__eq};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  ATTR_parser_nodes___ABinopExpr____n_expr2(variable[0]) /*ABinopExpr::_n_expr2*/ =  variable[1] /*n*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[0]) /*PNode::parent=*/;
   }
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ANeExpr].i] = 1;
+  return_label582: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___ANeExpr___replace_child(val_t  self, val_t  param0, val_t  param1) {
-  struct trace_t trace = {NULL, "parser_prod::ANeExpr::replace_child (src/parser//parser_prod.nit:6421,5--6442:18)"};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  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*/) /*PNode::==*/)))))));
-  if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert failed: src/parser//parser_prod.nit:6423,9--32\n"); nit_exit(1);}
-  variable2 = ATTR_parser_nodes___ASendExpr____n_expr( self) /*ANeExpr::_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*/) /*PExpr::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*PNode::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_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 failed: src/parser//parser_prod.nit:6427,3--28\n"); nit_exit(1);}
-      ATTR_parser_nodes___ASendExpr____n_expr( self) /*ANeExpr::_n_expr*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___ASendExpr____n_expr( self) /*ANeExpr::_n_expr*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label554;
-  }
-  variable2 = ATTR_parser_nodes___ABinopExpr____n_expr2( self) /*ANeExpr::_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*/) /*PExpr::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*PNode::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_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 failed: src/parser//parser_prod.nit:6437,3--28\n"); nit_exit(1);}
-      ATTR_parser_nodes___ABinopExpr____n_expr2( self) /*ANeExpr::_n_expr2*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___ABinopExpr____n_expr2( self) /*ANeExpr::_n_expr2*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label554;
+  struct trace_t trace = {NULL, NULL, 6760, LOCATE_parser_prod___ANeExpr___replace_child};
+  val_t variable[5];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Local variable */
+  variable[2] =  param1;
+  /* Register variable[3]: Method return value and escape marker */
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ANeExpr___replace_child, LOCATE_parser_prod, 6762); nit_exit(1);}
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___ASendExpr____n_expr(variable[0]) /*ASendExpr::_n_expr*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*PNode::parent=*/;
+      /* Register variable[4]: Result */
+      variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
+      if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ANeExpr___replace_child, LOCATE_parser_prod, 6766); nit_exit(1);}
+      ATTR_parser_nodes___ASendExpr____n_expr(variable[0]) /*ASendExpr::_n_expr*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      ATTR_parser_nodes___ASendExpr____n_expr(variable[0]) /*ASendExpr::_n_expr*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label583;
+  }
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___ABinopExpr____n_expr2(variable[0]) /*ABinopExpr::_n_expr2*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*PNode::parent=*/;
+      /* Register variable[4]: Result */
+      variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
+      if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ANeExpr___replace_child, LOCATE_parser_prod, 6776); nit_exit(1);}
+      ATTR_parser_nodes___ABinopExpr____n_expr2(variable[0]) /*ABinopExpr::_n_expr2*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      ATTR_parser_nodes___ABinopExpr____n_expr2(variable[0]) /*ABinopExpr::_n_expr2*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label583;
   }
-  return_label554: while(false);
+  return_label583: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___ANeExpr___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::ANeExpr::visit_all (src/parser//parser_prod.nit:6446,5--6452:28)"};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___ASendExpr____n_expr( self) /*ANeExpr::_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*/) /*PExpr::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___ASendExpr____n_expr( self) /*ANeExpr::_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) /*ANeExpr::_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*/) /*PExpr::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___ABinopExpr____n_expr2( self) /*ANeExpr::_n_expr2*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
+  struct trace_t trace = {NULL, NULL, 6785, LOCATE_parser_prod___ANeExpr___visit_all};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___ASendExpr____n_expr(variable[0]) /*ASendExpr::_n_expr*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___ASendExpr____n_expr(variable[0]) /*ASendExpr::_n_expr*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___ABinopExpr____n_expr2(variable[0]) /*ABinopExpr::_n_expr2*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___ABinopExpr____n_expr2(variable[0]) /*ABinopExpr::_n_expr2*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  return_label584: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___ANeExpr___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::ANeExpr::visit_all_reverse (src/parser//parser_prod.nit:6456,5--6462:28)"};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___ASendExpr____n_expr( self) /*ANeExpr::_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*/) /*PExpr::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___ASendExpr____n_expr( self) /*ANeExpr::_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) /*ANeExpr::_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*/) /*PExpr::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___ABinopExpr____n_expr2( self) /*ANeExpr::_n_expr2*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
+  struct trace_t trace = {NULL, NULL, 6795, LOCATE_parser_prod___ANeExpr___visit_all_reverse};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___ASendExpr____n_expr(variable[0]) /*ASendExpr::_n_expr*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___ASendExpr____n_expr(variable[0]) /*ASendExpr::_n_expr*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___ABinopExpr____n_expr2(variable[0]) /*ABinopExpr::_n_expr2*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___ABinopExpr____n_expr2(variable[0]) /*ABinopExpr::_n_expr2*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  return_label585: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___ALtExpr___n_expr__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::ALtExpr::n_expr= (src/parser//parser_prod.nit:6467,5--6471:20)"};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___ANeExpr___empty_init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 6742, LOCATE_parser_prod___ANeExpr___empty_init};
+  val_t variable[2];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  variable0 =  param0;
-  ATTR_parser_nodes___ASendExpr____n_expr( self) /*ALtExpr::_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*/) /*PExpr::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PExpr::parent=*/;
-  }
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ANeExpr].i]) return;
+  /* Register variable[1]: Method return value and escape marker */
+  return_label586: while(false);
+  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ANeExpr].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser_prod___ALtExpr___n_expr2__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::ALtExpr::n_expr2= (src/parser//parser_prod.nit:6474,5--6478:20)"};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  variable0 =  param0;
-  ATTR_parser_nodes___ABinopExpr____n_expr2( self) /*ALtExpr::_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*/) /*PExpr::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PExpr::parent=*/;
-  }
+void parser_prod___ANeExpr___init_aneexpr(val_t  self, val_t  param0, val_t  param1, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 6744, LOCATE_parser_prod___ANeExpr___init_aneexpr};
+  val_t variable[5];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Local variable */
+  variable[2] =  param1;
+  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ANeExpr].i]) return;
+  /* Register variable[3]: Method return value and escape marker */
+  CALL_parser_prod___ANeExpr___empty_init(variable[0])(variable[0], init_table /*YYY*/) /*ANeExpr::empty_init*/;
+  ATTR_parser_nodes___ASendExpr____n_expr(variable[0]) /*ASendExpr::_n_expr*/ =  variable[1] /*n_expr*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_expr*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_expr*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n_expr*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_expr*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n_expr*/)( variable[1] /*n_expr*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n_expr*/)( variable[1] /*n_expr*/, variable[0]) /*PNode::parent=*/;
+  }
+  ATTR_parser_nodes___ABinopExpr____n_expr2(variable[0]) /*ABinopExpr::_n_expr2*/ =  variable[2] /*n_expr2*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*n_expr2*/ ==  NIT_NULL /*null*/) || (( variable[2] /*n_expr2*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*n_expr2*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*n_expr2*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*n_expr2*/)( variable[2] /*n_expr2*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[2] /*n_expr2*/)( variable[2] /*n_expr2*/, variable[0]) /*PNode::parent=*/;
+  }
+  return_label587: while(false);
+  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ANeExpr].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser_prod___ALtExpr___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, "parser_prod::ALtExpr::empty_init (src/parser//parser_prod.nit:6482,5--27)"};
+void parser_prod___ALtExpr___n_expr__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 6806, LOCATE_parser_prod___ALtExpr___n_expr__eq};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  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;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  ATTR_parser_nodes___ASendExpr____n_expr(variable[0]) /*ASendExpr::_n_expr*/ =  variable[1] /*n*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[0]) /*PNode::parent=*/;
+  }
+  return_label588: while(false);
   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, "parser_prod::ALtExpr::init_altexpr (src/parser//parser_prod.nit:6484,5--6495:23)"};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  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) /*ALtExpr::_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*/) /*PExpr::==*/)))))));
-  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) /*PExpr::parent=*/;
-  }
-  ATTR_parser_nodes___ABinopExpr____n_expr2( self) /*ALtExpr::_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*/) /*PExpr::==*/)))))));
-  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) /*PExpr::parent=*/;
+void parser_prod___ALtExpr___n_expr2__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 6813, LOCATE_parser_prod___ALtExpr___n_expr2__eq};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  ATTR_parser_nodes___ABinopExpr____n_expr2(variable[0]) /*ABinopExpr::_n_expr2*/ =  variable[1] /*n*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[0]) /*PNode::parent=*/;
   }
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ALtExpr].i] = 1;
+  return_label589: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___ALtExpr___replace_child(val_t  self, val_t  param0, val_t  param1) {
-  struct trace_t trace = {NULL, "parser_prod::ALtExpr::replace_child (src/parser//parser_prod.nit:6499,5--6520:18)"};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  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*/) /*PNode::==*/)))))));
-  if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert failed: src/parser//parser_prod.nit:6501,9--32\n"); nit_exit(1);}
-  variable2 = ATTR_parser_nodes___ASendExpr____n_expr( self) /*ALtExpr::_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*/) /*PExpr::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*PNode::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_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 failed: src/parser//parser_prod.nit:6505,3--28\n"); nit_exit(1);}
-      ATTR_parser_nodes___ASendExpr____n_expr( self) /*ALtExpr::_n_expr*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___ASendExpr____n_expr( self) /*ALtExpr::_n_expr*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label561;
-  }
-  variable2 = ATTR_parser_nodes___ABinopExpr____n_expr2( self) /*ALtExpr::_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*/) /*PExpr::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*PNode::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_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 failed: src/parser//parser_prod.nit:6515,3--28\n"); nit_exit(1);}
-      ATTR_parser_nodes___ABinopExpr____n_expr2( self) /*ALtExpr::_n_expr2*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___ABinopExpr____n_expr2( self) /*ALtExpr::_n_expr2*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label561;
+  struct trace_t trace = {NULL, NULL, 6839, LOCATE_parser_prod___ALtExpr___replace_child};
+  val_t variable[5];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Local variable */
+  variable[2] =  param1;
+  /* Register variable[3]: Method return value and escape marker */
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ALtExpr___replace_child, LOCATE_parser_prod, 6841); nit_exit(1);}
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___ASendExpr____n_expr(variable[0]) /*ASendExpr::_n_expr*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*PNode::parent=*/;
+      /* Register variable[4]: Result */
+      variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
+      if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ALtExpr___replace_child, LOCATE_parser_prod, 6845); nit_exit(1);}
+      ATTR_parser_nodes___ASendExpr____n_expr(variable[0]) /*ASendExpr::_n_expr*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      ATTR_parser_nodes___ASendExpr____n_expr(variable[0]) /*ASendExpr::_n_expr*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label590;
+  }
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___ABinopExpr____n_expr2(variable[0]) /*ABinopExpr::_n_expr2*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*PNode::parent=*/;
+      /* Register variable[4]: Result */
+      variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
+      if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ALtExpr___replace_child, LOCATE_parser_prod, 6855); nit_exit(1);}
+      ATTR_parser_nodes___ABinopExpr____n_expr2(variable[0]) /*ABinopExpr::_n_expr2*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      ATTR_parser_nodes___ABinopExpr____n_expr2(variable[0]) /*ABinopExpr::_n_expr2*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label590;
   }
-  return_label561: while(false);
+  return_label590: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___ALtExpr___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::ALtExpr::visit_all (src/parser//parser_prod.nit:6524,5--6530:28)"};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___ASendExpr____n_expr( self) /*ALtExpr::_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*/) /*PExpr::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___ASendExpr____n_expr( self) /*ALtExpr::_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) /*ALtExpr::_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*/) /*PExpr::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___ABinopExpr____n_expr2( self) /*ALtExpr::_n_expr2*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
+  struct trace_t trace = {NULL, NULL, 6864, LOCATE_parser_prod___ALtExpr___visit_all};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___ASendExpr____n_expr(variable[0]) /*ASendExpr::_n_expr*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___ASendExpr____n_expr(variable[0]) /*ASendExpr::_n_expr*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___ABinopExpr____n_expr2(variable[0]) /*ABinopExpr::_n_expr2*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___ABinopExpr____n_expr2(variable[0]) /*ABinopExpr::_n_expr2*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  return_label591: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___ALtExpr___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::ALtExpr::visit_all_reverse (src/parser//parser_prod.nit:6534,5--6540:28)"};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___ASendExpr____n_expr( self) /*ALtExpr::_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*/) /*PExpr::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___ASendExpr____n_expr( self) /*ALtExpr::_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) /*ALtExpr::_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*/) /*PExpr::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___ABinopExpr____n_expr2( self) /*ALtExpr::_n_expr2*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
+  struct trace_t trace = {NULL, NULL, 6874, LOCATE_parser_prod___ALtExpr___visit_all_reverse};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___ASendExpr____n_expr(variable[0]) /*ASendExpr::_n_expr*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___ASendExpr____n_expr(variable[0]) /*ASendExpr::_n_expr*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___ABinopExpr____n_expr2(variable[0]) /*ABinopExpr::_n_expr2*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___ABinopExpr____n_expr2(variable[0]) /*ABinopExpr::_n_expr2*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  return_label592: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___ALeExpr___n_expr__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::ALeExpr::n_expr= (src/parser//parser_prod.nit:6545,5--6549:20)"};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___ALtExpr___empty_init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 6821, LOCATE_parser_prod___ALtExpr___empty_init};
+  val_t variable[2];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  variable0 =  param0;
-  ATTR_parser_nodes___ASendExpr____n_expr( self) /*ALeExpr::_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*/) /*PExpr::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PExpr::parent=*/;
-  }
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ALtExpr].i]) return;
+  /* Register variable[1]: Method return value and escape marker */
+  return_label593: while(false);
+  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ALtExpr].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser_prod___ALeExpr___n_expr2__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::ALeExpr::n_expr2= (src/parser//parser_prod.nit:6552,5--6556:20)"};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  variable0 =  param0;
-  ATTR_parser_nodes___ABinopExpr____n_expr2( self) /*ALeExpr::_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*/) /*PExpr::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PExpr::parent=*/;
-  }
+void parser_prod___ALtExpr___init_altexpr(val_t  self, val_t  param0, val_t  param1, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 6823, LOCATE_parser_prod___ALtExpr___init_altexpr};
+  val_t variable[5];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Local variable */
+  variable[2] =  param1;
+  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ALtExpr].i]) return;
+  /* Register variable[3]: Method return value and escape marker */
+  CALL_parser_prod___ALtExpr___empty_init(variable[0])(variable[0], init_table /*YYY*/) /*ALtExpr::empty_init*/;
+  ATTR_parser_nodes___ASendExpr____n_expr(variable[0]) /*ASendExpr::_n_expr*/ =  variable[1] /*n_expr*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_expr*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_expr*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n_expr*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_expr*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n_expr*/)( variable[1] /*n_expr*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n_expr*/)( variable[1] /*n_expr*/, variable[0]) /*PNode::parent=*/;
+  }
+  ATTR_parser_nodes___ABinopExpr____n_expr2(variable[0]) /*ABinopExpr::_n_expr2*/ =  variable[2] /*n_expr2*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*n_expr2*/ ==  NIT_NULL /*null*/) || (( variable[2] /*n_expr2*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*n_expr2*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*n_expr2*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*n_expr2*/)( variable[2] /*n_expr2*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[2] /*n_expr2*/)( variable[2] /*n_expr2*/, variable[0]) /*PNode::parent=*/;
+  }
+  return_label594: while(false);
+  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ALtExpr].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser_prod___ALeExpr___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, "parser_prod::ALeExpr::empty_init (src/parser//parser_prod.nit:6560,5--27)"};
+void parser_prod___ALeExpr___n_expr__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 6885, LOCATE_parser_prod___ALeExpr___n_expr__eq};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  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;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  ATTR_parser_nodes___ASendExpr____n_expr(variable[0]) /*ASendExpr::_n_expr*/ =  variable[1] /*n*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[0]) /*PNode::parent=*/;
+  }
+  return_label595: while(false);
   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, "parser_prod::ALeExpr::init_aleexpr (src/parser//parser_prod.nit:6562,5--6573:23)"};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  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) /*ALeExpr::_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*/) /*PExpr::==*/)))))));
-  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) /*PExpr::parent=*/;
-  }
-  ATTR_parser_nodes___ABinopExpr____n_expr2( self) /*ALeExpr::_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*/) /*PExpr::==*/)))))));
-  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) /*PExpr::parent=*/;
+void parser_prod___ALeExpr___n_expr2__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 6892, LOCATE_parser_prod___ALeExpr___n_expr2__eq};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  ATTR_parser_nodes___ABinopExpr____n_expr2(variable[0]) /*ABinopExpr::_n_expr2*/ =  variable[1] /*n*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[0]) /*PNode::parent=*/;
   }
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ALeExpr].i] = 1;
+  return_label596: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___ALeExpr___replace_child(val_t  self, val_t  param0, val_t  param1) {
-  struct trace_t trace = {NULL, "parser_prod::ALeExpr::replace_child (src/parser//parser_prod.nit:6577,5--6598:18)"};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  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*/) /*PNode::==*/)))))));
-  if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert failed: src/parser//parser_prod.nit:6579,9--32\n"); nit_exit(1);}
-  variable2 = ATTR_parser_nodes___ASendExpr____n_expr( self) /*ALeExpr::_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*/) /*PExpr::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*PNode::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_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 failed: src/parser//parser_prod.nit:6583,3--28\n"); nit_exit(1);}
-      ATTR_parser_nodes___ASendExpr____n_expr( self) /*ALeExpr::_n_expr*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___ASendExpr____n_expr( self) /*ALeExpr::_n_expr*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label568;
-  }
-  variable2 = ATTR_parser_nodes___ABinopExpr____n_expr2( self) /*ALeExpr::_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*/) /*PExpr::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*PNode::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_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 failed: src/parser//parser_prod.nit:6593,3--28\n"); nit_exit(1);}
-      ATTR_parser_nodes___ABinopExpr____n_expr2( self) /*ALeExpr::_n_expr2*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___ABinopExpr____n_expr2( self) /*ALeExpr::_n_expr2*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label568;
+  struct trace_t trace = {NULL, NULL, 6918, LOCATE_parser_prod___ALeExpr___replace_child};
+  val_t variable[5];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Local variable */
+  variable[2] =  param1;
+  /* Register variable[3]: Method return value and escape marker */
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ALeExpr___replace_child, LOCATE_parser_prod, 6920); nit_exit(1);}
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___ASendExpr____n_expr(variable[0]) /*ASendExpr::_n_expr*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*PNode::parent=*/;
+      /* Register variable[4]: Result */
+      variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
+      if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ALeExpr___replace_child, LOCATE_parser_prod, 6924); nit_exit(1);}
+      ATTR_parser_nodes___ASendExpr____n_expr(variable[0]) /*ASendExpr::_n_expr*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      ATTR_parser_nodes___ASendExpr____n_expr(variable[0]) /*ASendExpr::_n_expr*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label597;
+  }
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___ABinopExpr____n_expr2(variable[0]) /*ABinopExpr::_n_expr2*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*PNode::parent=*/;
+      /* Register variable[4]: Result */
+      variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
+      if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ALeExpr___replace_child, LOCATE_parser_prod, 6934); nit_exit(1);}
+      ATTR_parser_nodes___ABinopExpr____n_expr2(variable[0]) /*ABinopExpr::_n_expr2*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      ATTR_parser_nodes___ABinopExpr____n_expr2(variable[0]) /*ABinopExpr::_n_expr2*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label597;
   }
-  return_label568: while(false);
+  return_label597: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___ALeExpr___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::ALeExpr::visit_all (src/parser//parser_prod.nit:6602,5--6608:28)"};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___ASendExpr____n_expr( self) /*ALeExpr::_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*/) /*PExpr::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___ASendExpr____n_expr( self) /*ALeExpr::_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) /*ALeExpr::_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*/) /*PExpr::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___ABinopExpr____n_expr2( self) /*ALeExpr::_n_expr2*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
+  struct trace_t trace = {NULL, NULL, 6943, LOCATE_parser_prod___ALeExpr___visit_all};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___ASendExpr____n_expr(variable[0]) /*ASendExpr::_n_expr*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___ASendExpr____n_expr(variable[0]) /*ASendExpr::_n_expr*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___ABinopExpr____n_expr2(variable[0]) /*ABinopExpr::_n_expr2*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___ABinopExpr____n_expr2(variable[0]) /*ABinopExpr::_n_expr2*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  return_label598: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___ALeExpr___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::ALeExpr::visit_all_reverse (src/parser//parser_prod.nit:6612,5--6618:28)"};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___ASendExpr____n_expr( self) /*ALeExpr::_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*/) /*PExpr::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___ASendExpr____n_expr( self) /*ALeExpr::_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) /*ALeExpr::_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*/) /*PExpr::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___ABinopExpr____n_expr2( self) /*ALeExpr::_n_expr2*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
+  struct trace_t trace = {NULL, NULL, 6953, LOCATE_parser_prod___ALeExpr___visit_all_reverse};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___ASendExpr____n_expr(variable[0]) /*ASendExpr::_n_expr*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___ASendExpr____n_expr(variable[0]) /*ASendExpr::_n_expr*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___ABinopExpr____n_expr2(variable[0]) /*ABinopExpr::_n_expr2*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___ABinopExpr____n_expr2(variable[0]) /*ABinopExpr::_n_expr2*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  return_label599: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AGtExpr___n_expr__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AGtExpr::n_expr= (src/parser//parser_prod.nit:6623,5--6627:20)"};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___ALeExpr___empty_init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 6900, LOCATE_parser_prod___ALeExpr___empty_init};
+  val_t variable[2];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  variable0 =  param0;
-  ATTR_parser_nodes___ASendExpr____n_expr( self) /*AGtExpr::_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*/) /*PExpr::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PExpr::parent=*/;
-  }
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ALeExpr].i]) return;
+  /* Register variable[1]: Method return value and escape marker */
+  return_label600: while(false);
+  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ALeExpr].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AGtExpr___n_expr2__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AGtExpr::n_expr2= (src/parser//parser_prod.nit:6630,5--6634:20)"};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  variable0 =  param0;
-  ATTR_parser_nodes___ABinopExpr____n_expr2( self) /*AGtExpr::_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*/) /*PExpr::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PExpr::parent=*/;
-  }
+void parser_prod___ALeExpr___init_aleexpr(val_t  self, val_t  param0, val_t  param1, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 6902, LOCATE_parser_prod___ALeExpr___init_aleexpr};
+  val_t variable[5];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Local variable */
+  variable[2] =  param1;
+  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ALeExpr].i]) return;
+  /* Register variable[3]: Method return value and escape marker */
+  CALL_parser_prod___ALeExpr___empty_init(variable[0])(variable[0], init_table /*YYY*/) /*ALeExpr::empty_init*/;
+  ATTR_parser_nodes___ASendExpr____n_expr(variable[0]) /*ASendExpr::_n_expr*/ =  variable[1] /*n_expr*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_expr*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_expr*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n_expr*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_expr*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n_expr*/)( variable[1] /*n_expr*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n_expr*/)( variable[1] /*n_expr*/, variable[0]) /*PNode::parent=*/;
+  }
+  ATTR_parser_nodes___ABinopExpr____n_expr2(variable[0]) /*ABinopExpr::_n_expr2*/ =  variable[2] /*n_expr2*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*n_expr2*/ ==  NIT_NULL /*null*/) || (( variable[2] /*n_expr2*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*n_expr2*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*n_expr2*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*n_expr2*/)( variable[2] /*n_expr2*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[2] /*n_expr2*/)( variable[2] /*n_expr2*/, variable[0]) /*PNode::parent=*/;
+  }
+  return_label601: while(false);
+  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ALeExpr].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AGtExpr___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, "parser_prod::AGtExpr::empty_init (src/parser//parser_prod.nit:6638,5--27)"};
+void parser_prod___AGtExpr___n_expr__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 6964, LOCATE_parser_prod___AGtExpr___n_expr__eq};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  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;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  ATTR_parser_nodes___ASendExpr____n_expr(variable[0]) /*ASendExpr::_n_expr*/ =  variable[1] /*n*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[0]) /*PNode::parent=*/;
+  }
+  return_label602: while(false);
   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, "parser_prod::AGtExpr::init_agtexpr (src/parser//parser_prod.nit:6640,5--6651:23)"};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  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) /*AGtExpr::_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*/) /*PExpr::==*/)))))));
-  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) /*PExpr::parent=*/;
-  }
-  ATTR_parser_nodes___ABinopExpr____n_expr2( self) /*AGtExpr::_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*/) /*PExpr::==*/)))))));
-  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) /*PExpr::parent=*/;
+void parser_prod___AGtExpr___n_expr2__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 6971, LOCATE_parser_prod___AGtExpr___n_expr2__eq};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  ATTR_parser_nodes___ABinopExpr____n_expr2(variable[0]) /*ABinopExpr::_n_expr2*/ =  variable[1] /*n*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[0]) /*PNode::parent=*/;
   }
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AGtExpr].i] = 1;
+  return_label603: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AGtExpr___replace_child(val_t  self, val_t  param0, val_t  param1) {
-  struct trace_t trace = {NULL, "parser_prod::AGtExpr::replace_child (src/parser//parser_prod.nit:6655,5--6676:18)"};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  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*/) /*PNode::==*/)))))));
-  if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert failed: src/parser//parser_prod.nit:6657,9--32\n"); nit_exit(1);}
-  variable2 = ATTR_parser_nodes___ASendExpr____n_expr( self) /*AGtExpr::_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*/) /*PExpr::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*PNode::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_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 failed: src/parser//parser_prod.nit:6661,3--28\n"); nit_exit(1);}
-      ATTR_parser_nodes___ASendExpr____n_expr( self) /*AGtExpr::_n_expr*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___ASendExpr____n_expr( self) /*AGtExpr::_n_expr*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label575;
-  }
-  variable2 = ATTR_parser_nodes___ABinopExpr____n_expr2( self) /*AGtExpr::_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*/) /*PExpr::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*PNode::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_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 failed: src/parser//parser_prod.nit:6671,3--28\n"); nit_exit(1);}
-      ATTR_parser_nodes___ABinopExpr____n_expr2( self) /*AGtExpr::_n_expr2*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___ABinopExpr____n_expr2( self) /*AGtExpr::_n_expr2*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label575;
+  struct trace_t trace = {NULL, NULL, 6997, LOCATE_parser_prod___AGtExpr___replace_child};
+  val_t variable[5];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Local variable */
+  variable[2] =  param1;
+  /* Register variable[3]: Method return value and escape marker */
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AGtExpr___replace_child, LOCATE_parser_prod, 6999); nit_exit(1);}
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___ASendExpr____n_expr(variable[0]) /*ASendExpr::_n_expr*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*PNode::parent=*/;
+      /* Register variable[4]: Result */
+      variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
+      if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AGtExpr___replace_child, LOCATE_parser_prod, 7003); nit_exit(1);}
+      ATTR_parser_nodes___ASendExpr____n_expr(variable[0]) /*ASendExpr::_n_expr*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      ATTR_parser_nodes___ASendExpr____n_expr(variable[0]) /*ASendExpr::_n_expr*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label604;
+  }
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___ABinopExpr____n_expr2(variable[0]) /*ABinopExpr::_n_expr2*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*PNode::parent=*/;
+      /* Register variable[4]: Result */
+      variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
+      if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AGtExpr___replace_child, LOCATE_parser_prod, 7013); nit_exit(1);}
+      ATTR_parser_nodes___ABinopExpr____n_expr2(variable[0]) /*ABinopExpr::_n_expr2*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      ATTR_parser_nodes___ABinopExpr____n_expr2(variable[0]) /*ABinopExpr::_n_expr2*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label604;
   }
-  return_label575: while(false);
+  return_label604: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AGtExpr___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AGtExpr::visit_all (src/parser//parser_prod.nit:6680,5--6686:28)"};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___ASendExpr____n_expr( self) /*AGtExpr::_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*/) /*PExpr::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___ASendExpr____n_expr( self) /*AGtExpr::_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) /*AGtExpr::_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*/) /*PExpr::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___ABinopExpr____n_expr2( self) /*AGtExpr::_n_expr2*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
+  struct trace_t trace = {NULL, NULL, 7022, LOCATE_parser_prod___AGtExpr___visit_all};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___ASendExpr____n_expr(variable[0]) /*ASendExpr::_n_expr*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___ASendExpr____n_expr(variable[0]) /*ASendExpr::_n_expr*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___ABinopExpr____n_expr2(variable[0]) /*ABinopExpr::_n_expr2*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___ABinopExpr____n_expr2(variable[0]) /*ABinopExpr::_n_expr2*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  return_label605: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AGtExpr___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AGtExpr::visit_all_reverse (src/parser//parser_prod.nit:6690,5--6696:28)"};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___ASendExpr____n_expr( self) /*AGtExpr::_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*/) /*PExpr::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___ASendExpr____n_expr( self) /*AGtExpr::_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) /*AGtExpr::_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*/) /*PExpr::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___ABinopExpr____n_expr2( self) /*AGtExpr::_n_expr2*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
+  struct trace_t trace = {NULL, NULL, 7032, LOCATE_parser_prod___AGtExpr___visit_all_reverse};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___ASendExpr____n_expr(variable[0]) /*ASendExpr::_n_expr*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___ASendExpr____n_expr(variable[0]) /*ASendExpr::_n_expr*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___ABinopExpr____n_expr2(variable[0]) /*ABinopExpr::_n_expr2*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___ABinopExpr____n_expr2(variable[0]) /*ABinopExpr::_n_expr2*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  return_label606: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AGeExpr___n_expr__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AGeExpr::n_expr= (src/parser//parser_prod.nit:6701,5--6705:20)"};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___AGtExpr___empty_init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 6979, LOCATE_parser_prod___AGtExpr___empty_init};
+  val_t variable[2];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  variable0 =  param0;
-  ATTR_parser_nodes___ASendExpr____n_expr( self) /*AGeExpr::_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*/) /*PExpr::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PExpr::parent=*/;
-  }
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AGtExpr].i]) return;
+  /* Register variable[1]: Method return value and escape marker */
+  return_label607: while(false);
+  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AGtExpr].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AGeExpr___n_expr2__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AGeExpr::n_expr2= (src/parser//parser_prod.nit:6708,5--6712:20)"};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  variable0 =  param0;
-  ATTR_parser_nodes___ABinopExpr____n_expr2( self) /*AGeExpr::_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*/) /*PExpr::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PExpr::parent=*/;
-  }
+void parser_prod___AGtExpr___init_agtexpr(val_t  self, val_t  param0, val_t  param1, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 6981, LOCATE_parser_prod___AGtExpr___init_agtexpr};
+  val_t variable[5];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Local variable */
+  variable[2] =  param1;
+  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AGtExpr].i]) return;
+  /* Register variable[3]: Method return value and escape marker */
+  CALL_parser_prod___AGtExpr___empty_init(variable[0])(variable[0], init_table /*YYY*/) /*AGtExpr::empty_init*/;
+  ATTR_parser_nodes___ASendExpr____n_expr(variable[0]) /*ASendExpr::_n_expr*/ =  variable[1] /*n_expr*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_expr*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_expr*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n_expr*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_expr*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n_expr*/)( variable[1] /*n_expr*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n_expr*/)( variable[1] /*n_expr*/, variable[0]) /*PNode::parent=*/;
+  }
+  ATTR_parser_nodes___ABinopExpr____n_expr2(variable[0]) /*ABinopExpr::_n_expr2*/ =  variable[2] /*n_expr2*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*n_expr2*/ ==  NIT_NULL /*null*/) || (( variable[2] /*n_expr2*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*n_expr2*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*n_expr2*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*n_expr2*/)( variable[2] /*n_expr2*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[2] /*n_expr2*/)( variable[2] /*n_expr2*/, variable[0]) /*PNode::parent=*/;
+  }
+  return_label608: while(false);
+  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AGtExpr].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AGeExpr___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, "parser_prod::AGeExpr::empty_init (src/parser//parser_prod.nit:6716,5--27)"};
+void parser_prod___AGeExpr___n_expr__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 7043, LOCATE_parser_prod___AGeExpr___n_expr__eq};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  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;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  ATTR_parser_nodes___ASendExpr____n_expr(variable[0]) /*ASendExpr::_n_expr*/ =  variable[1] /*n*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[0]) /*PNode::parent=*/;
+  }
+  return_label609: while(false);
   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, "parser_prod::AGeExpr::init_ageexpr (src/parser//parser_prod.nit:6718,5--6729:23)"};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  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) /*AGeExpr::_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*/) /*PExpr::==*/)))))));
-  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) /*PExpr::parent=*/;
-  }
-  ATTR_parser_nodes___ABinopExpr____n_expr2( self) /*AGeExpr::_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*/) /*PExpr::==*/)))))));
-  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) /*PExpr::parent=*/;
+void parser_prod___AGeExpr___n_expr2__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 7050, LOCATE_parser_prod___AGeExpr___n_expr2__eq};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  ATTR_parser_nodes___ABinopExpr____n_expr2(variable[0]) /*ABinopExpr::_n_expr2*/ =  variable[1] /*n*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[0]) /*PNode::parent=*/;
   }
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AGeExpr].i] = 1;
+  return_label610: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AGeExpr___replace_child(val_t  self, val_t  param0, val_t  param1) {
-  struct trace_t trace = {NULL, "parser_prod::AGeExpr::replace_child (src/parser//parser_prod.nit:6733,5--6754:18)"};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  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*/) /*PNode::==*/)))))));
-  if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert failed: src/parser//parser_prod.nit:6735,9--32\n"); nit_exit(1);}
-  variable2 = ATTR_parser_nodes___ASendExpr____n_expr( self) /*AGeExpr::_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*/) /*PExpr::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*PNode::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_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 failed: src/parser//parser_prod.nit:6739,3--28\n"); nit_exit(1);}
-      ATTR_parser_nodes___ASendExpr____n_expr( self) /*AGeExpr::_n_expr*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___ASendExpr____n_expr( self) /*AGeExpr::_n_expr*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label582;
-  }
-  variable2 = ATTR_parser_nodes___ABinopExpr____n_expr2( self) /*AGeExpr::_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*/) /*PExpr::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*PNode::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_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 failed: src/parser//parser_prod.nit:6749,3--28\n"); nit_exit(1);}
-      ATTR_parser_nodes___ABinopExpr____n_expr2( self) /*AGeExpr::_n_expr2*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___ABinopExpr____n_expr2( self) /*AGeExpr::_n_expr2*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label582;
+  struct trace_t trace = {NULL, NULL, 7076, LOCATE_parser_prod___AGeExpr___replace_child};
+  val_t variable[5];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Local variable */
+  variable[2] =  param1;
+  /* Register variable[3]: Method return value and escape marker */
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AGeExpr___replace_child, LOCATE_parser_prod, 7078); nit_exit(1);}
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___ASendExpr____n_expr(variable[0]) /*ASendExpr::_n_expr*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*PNode::parent=*/;
+      /* Register variable[4]: Result */
+      variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
+      if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AGeExpr___replace_child, LOCATE_parser_prod, 7082); nit_exit(1);}
+      ATTR_parser_nodes___ASendExpr____n_expr(variable[0]) /*ASendExpr::_n_expr*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      ATTR_parser_nodes___ASendExpr____n_expr(variable[0]) /*ASendExpr::_n_expr*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label611;
+  }
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___ABinopExpr____n_expr2(variable[0]) /*ABinopExpr::_n_expr2*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*PNode::parent=*/;
+      /* Register variable[4]: Result */
+      variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
+      if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AGeExpr___replace_child, LOCATE_parser_prod, 7092); nit_exit(1);}
+      ATTR_parser_nodes___ABinopExpr____n_expr2(variable[0]) /*ABinopExpr::_n_expr2*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      ATTR_parser_nodes___ABinopExpr____n_expr2(variable[0]) /*ABinopExpr::_n_expr2*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label611;
   }
-  return_label582: while(false);
+  return_label611: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AGeExpr___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AGeExpr::visit_all (src/parser//parser_prod.nit:6758,5--6764:28)"};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___ASendExpr____n_expr( self) /*AGeExpr::_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*/) /*PExpr::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___ASendExpr____n_expr( self) /*AGeExpr::_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) /*AGeExpr::_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*/) /*PExpr::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___ABinopExpr____n_expr2( self) /*AGeExpr::_n_expr2*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
+  struct trace_t trace = {NULL, NULL, 7101, LOCATE_parser_prod___AGeExpr___visit_all};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___ASendExpr____n_expr(variable[0]) /*ASendExpr::_n_expr*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___ASendExpr____n_expr(variable[0]) /*ASendExpr::_n_expr*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___ABinopExpr____n_expr2(variable[0]) /*ABinopExpr::_n_expr2*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___ABinopExpr____n_expr2(variable[0]) /*ABinopExpr::_n_expr2*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  return_label612: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AGeExpr___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AGeExpr::visit_all_reverse (src/parser//parser_prod.nit:6768,5--6774:28)"};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___ASendExpr____n_expr( self) /*AGeExpr::_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*/) /*PExpr::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___ASendExpr____n_expr( self) /*AGeExpr::_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) /*AGeExpr::_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*/) /*PExpr::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___ABinopExpr____n_expr2( self) /*AGeExpr::_n_expr2*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
+  struct trace_t trace = {NULL, NULL, 7111, LOCATE_parser_prod___AGeExpr___visit_all_reverse};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___ASendExpr____n_expr(variable[0]) /*ASendExpr::_n_expr*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___ASendExpr____n_expr(variable[0]) /*ASendExpr::_n_expr*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___ABinopExpr____n_expr2(variable[0]) /*ABinopExpr::_n_expr2*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___ABinopExpr____n_expr2(variable[0]) /*ABinopExpr::_n_expr2*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  return_label613: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AIsaExpr___n_expr__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AIsaExpr::n_expr= (src/parser//parser_prod.nit:6779,5--6783:20)"};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___AGeExpr___empty_init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 7058, LOCATE_parser_prod___AGeExpr___empty_init};
+  val_t variable[2];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  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*/) /*PExpr::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PExpr::parent=*/;
-  }
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AGeExpr].i]) return;
+  /* Register variable[1]: Method return value and escape marker */
+  return_label614: while(false);
+  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AGeExpr].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AIsaExpr___n_type__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AIsaExpr::n_type= (src/parser//parser_prod.nit:6786,5--6790:20)"};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  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*/) /*PType::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PType::parent=*/;
-  }
+void parser_prod___AGeExpr___init_ageexpr(val_t  self, val_t  param0, val_t  param1, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 7060, LOCATE_parser_prod___AGeExpr___init_ageexpr};
+  val_t variable[5];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Local variable */
+  variable[2] =  param1;
+  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AGeExpr].i]) return;
+  /* Register variable[3]: Method return value and escape marker */
+  CALL_parser_prod___AGeExpr___empty_init(variable[0])(variable[0], init_table /*YYY*/) /*AGeExpr::empty_init*/;
+  ATTR_parser_nodes___ASendExpr____n_expr(variable[0]) /*ASendExpr::_n_expr*/ =  variable[1] /*n_expr*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_expr*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_expr*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n_expr*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_expr*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n_expr*/)( variable[1] /*n_expr*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n_expr*/)( variable[1] /*n_expr*/, variable[0]) /*PNode::parent=*/;
+  }
+  ATTR_parser_nodes___ABinopExpr____n_expr2(variable[0]) /*ABinopExpr::_n_expr2*/ =  variable[2] /*n_expr2*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*n_expr2*/ ==  NIT_NULL /*null*/) || (( variable[2] /*n_expr2*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*n_expr2*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*n_expr2*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*n_expr2*/)( variable[2] /*n_expr2*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[2] /*n_expr2*/)( variable[2] /*n_expr2*/, variable[0]) /*PNode::parent=*/;
+  }
+  return_label615: while(false);
+  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AGeExpr].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AIsaExpr___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, "parser_prod::AIsaExpr::empty_init (src/parser//parser_prod.nit:6794,5--27)"};
+void parser_prod___AIsaExpr___n_expr__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 7122, LOCATE_parser_prod___AIsaExpr___n_expr__eq};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AIsaExpr].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AIsaExpr].i] = 1;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  ATTR_parser_nodes___AIsaExpr____n_expr(variable[0]) /*AIsaExpr::_n_expr*/ =  variable[1] /*n*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[0]) /*PNode::parent=*/;
+  }
+  return_label616: while(false);
   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, "parser_prod::AIsaExpr::init_aisaexpr (src/parser//parser_prod.nit:6796,5--6807:22)"};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  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*/) /*PExpr::==*/)))))));
-  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) /*PExpr::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*/) /*PType::==*/)))))));
-  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) /*PType::parent=*/;
+void parser_prod___AIsaExpr___n_type__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 7129, LOCATE_parser_prod___AIsaExpr___n_type__eq};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  ATTR_parser_nodes___AIsaExpr____n_type(variable[0]) /*AIsaExpr::_n_type*/ =  variable[1] /*n*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[0]) /*PNode::parent=*/;
   }
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AIsaExpr].i] = 1;
+  return_label617: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AIsaExpr___replace_child(val_t  self, val_t  param0, val_t  param1) {
-  struct trace_t trace = {NULL, "parser_prod::AIsaExpr::replace_child (src/parser//parser_prod.nit:6811,5--6832:18)"};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  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*/) /*PNode::==*/)))))));
-  if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert failed: src/parser//parser_prod.nit:6813,9--32\n"); 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*/) /*PExpr::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*PNode::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_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 failed: src/parser//parser_prod.nit:6817,3--28\n"); 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_label589;
-  }
-  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*/) /*PType::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*PNode::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_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 failed: src/parser//parser_prod.nit:6827,3--28\n"); 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_label589;
+  struct trace_t trace = {NULL, NULL, 7155, LOCATE_parser_prod___AIsaExpr___replace_child};
+  val_t variable[5];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Local variable */
+  variable[2] =  param1;
+  /* Register variable[3]: Method return value and escape marker */
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AIsaExpr___replace_child, LOCATE_parser_prod, 7157); nit_exit(1);}
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___AIsaExpr____n_expr(variable[0]) /*AIsaExpr::_n_expr*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*PNode::parent=*/;
+      /* Register variable[4]: Result */
+      variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
+      if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AIsaExpr___replace_child, LOCATE_parser_prod, 7161); nit_exit(1);}
+      ATTR_parser_nodes___AIsaExpr____n_expr(variable[0]) /*AIsaExpr::_n_expr*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      ATTR_parser_nodes___AIsaExpr____n_expr(variable[0]) /*AIsaExpr::_n_expr*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label618;
+  }
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___AIsaExpr____n_type(variable[0]) /*AIsaExpr::_n_type*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*PNode::parent=*/;
+      /* Register variable[4]: Result */
+      variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PType, ID_PType)) /*cast PType*/;
+      if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AIsaExpr___replace_child, LOCATE_parser_prod, 7171); nit_exit(1);}
+      ATTR_parser_nodes___AIsaExpr____n_type(variable[0]) /*AIsaExpr::_n_type*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      ATTR_parser_nodes___AIsaExpr____n_type(variable[0]) /*AIsaExpr::_n_type*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label618;
   }
-  return_label589: while(false);
+  return_label618: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AIsaExpr___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AIsaExpr::visit_all (src/parser//parser_prod.nit:6836,5--6842:27)"};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  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*/) /*PExpr::==*/)))))));
-  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*/) /*PType::==*/)))))));
-  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*/;
-  }
+  struct trace_t trace = {NULL, NULL, 7180, LOCATE_parser_prod___AIsaExpr___visit_all};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AIsaExpr____n_expr(variable[0]) /*AIsaExpr::_n_expr*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AIsaExpr____n_expr(variable[0]) /*AIsaExpr::_n_expr*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AIsaExpr____n_type(variable[0]) /*AIsaExpr::_n_type*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AIsaExpr____n_type(variable[0]) /*AIsaExpr::_n_type*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  return_label619: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AIsaExpr___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AIsaExpr::visit_all_reverse (src/parser//parser_prod.nit:6846,5--6852:27)"};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  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*/) /*PExpr::==*/)))))));
-  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*/) /*PType::==*/)))))));
-  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*/;
-  }
+  struct trace_t trace = {NULL, NULL, 7190, LOCATE_parser_prod___AIsaExpr___visit_all_reverse};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AIsaExpr____n_expr(variable[0]) /*AIsaExpr::_n_expr*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AIsaExpr____n_expr(variable[0]) /*AIsaExpr::_n_expr*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AIsaExpr____n_type(variable[0]) /*AIsaExpr::_n_type*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AIsaExpr____n_type(variable[0]) /*AIsaExpr::_n_type*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  return_label620: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___APlusExpr___n_expr__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::APlusExpr::n_expr= (src/parser//parser_prod.nit:6857,5--6861:20)"};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___AIsaExpr___empty_init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 7137, LOCATE_parser_prod___AIsaExpr___empty_init};
+  val_t variable[2];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  variable0 =  param0;
-  ATTR_parser_nodes___ASendExpr____n_expr( self) /*APlusExpr::_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*/) /*PExpr::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PExpr::parent=*/;
-  }
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AIsaExpr].i]) return;
+  /* Register variable[1]: Method return value and escape marker */
+  return_label621: while(false);
+  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AIsaExpr].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser_prod___APlusExpr___n_expr2__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::APlusExpr::n_expr2= (src/parser//parser_prod.nit:6864,5--6868:20)"};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  variable0 =  param0;
-  ATTR_parser_nodes___ABinopExpr____n_expr2( self) /*APlusExpr::_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*/) /*PExpr::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PExpr::parent=*/;
-  }
+void parser_prod___AIsaExpr___init_aisaexpr(val_t  self, val_t  param0, val_t  param1, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 7139, LOCATE_parser_prod___AIsaExpr___init_aisaexpr};
+  val_t variable[5];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Local variable */
+  variable[2] =  param1;
+  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AIsaExpr].i]) return;
+  /* Register variable[3]: Method return value and escape marker */
+  CALL_parser_prod___AIsaExpr___empty_init(variable[0])(variable[0], init_table /*YYY*/) /*AIsaExpr::empty_init*/;
+  ATTR_parser_nodes___AIsaExpr____n_expr(variable[0]) /*AIsaExpr::_n_expr*/ =  variable[1] /*n_expr*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_expr*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_expr*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n_expr*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_expr*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n_expr*/)( variable[1] /*n_expr*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n_expr*/)( variable[1] /*n_expr*/, variable[0]) /*PNode::parent=*/;
+  }
+  ATTR_parser_nodes___AIsaExpr____n_type(variable[0]) /*AIsaExpr::_n_type*/ =  variable[2] /*n_type*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*n_type*/ ==  NIT_NULL /*null*/) || (( variable[2] /*n_type*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*n_type*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*n_type*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*n_type*/)( variable[2] /*n_type*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[2] /*n_type*/)( variable[2] /*n_type*/, variable[0]) /*PNode::parent=*/;
+  }
+  return_label622: while(false);
+  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AIsaExpr].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser_prod___APlusExpr___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, "parser_prod::APlusExpr::empty_init (src/parser//parser_prod.nit:6872,5--27)"};
+void parser_prod___APlusExpr___n_expr__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 7201, LOCATE_parser_prod___APlusExpr___n_expr__eq};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  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;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  ATTR_parser_nodes___ASendExpr____n_expr(variable[0]) /*ASendExpr::_n_expr*/ =  variable[1] /*n*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[0]) /*PNode::parent=*/;
+  }
+  return_label623: while(false);
   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, "parser_prod::APlusExpr::init_aplusexpr (src/parser//parser_prod.nit:6874,5--6885:23)"};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  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) /*APlusExpr::_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*/) /*PExpr::==*/)))))));
-  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) /*PExpr::parent=*/;
-  }
-  ATTR_parser_nodes___ABinopExpr____n_expr2( self) /*APlusExpr::_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*/) /*PExpr::==*/)))))));
-  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) /*PExpr::parent=*/;
+void parser_prod___APlusExpr___n_expr2__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 7208, LOCATE_parser_prod___APlusExpr___n_expr2__eq};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  ATTR_parser_nodes___ABinopExpr____n_expr2(variable[0]) /*ABinopExpr::_n_expr2*/ =  variable[1] /*n*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[0]) /*PNode::parent=*/;
   }
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_APlusExpr].i] = 1;
+  return_label624: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___APlusExpr___replace_child(val_t  self, val_t  param0, val_t  param1) {
-  struct trace_t trace = {NULL, "parser_prod::APlusExpr::replace_child (src/parser//parser_prod.nit:6889,5--6910:18)"};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  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*/) /*PNode::==*/)))))));
-  if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert failed: src/parser//parser_prod.nit:6891,9--32\n"); nit_exit(1);}
-  variable2 = ATTR_parser_nodes___ASendExpr____n_expr( self) /*APlusExpr::_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*/) /*PExpr::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*PNode::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_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 failed: src/parser//parser_prod.nit:6895,3--28\n"); nit_exit(1);}
-      ATTR_parser_nodes___ASendExpr____n_expr( self) /*APlusExpr::_n_expr*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___ASendExpr____n_expr( self) /*APlusExpr::_n_expr*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label596;
-  }
-  variable2 = ATTR_parser_nodes___ABinopExpr____n_expr2( self) /*APlusExpr::_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*/) /*PExpr::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*PNode::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_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 failed: src/parser//parser_prod.nit:6905,3--28\n"); nit_exit(1);}
-      ATTR_parser_nodes___ABinopExpr____n_expr2( self) /*APlusExpr::_n_expr2*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___ABinopExpr____n_expr2( self) /*APlusExpr::_n_expr2*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label596;
+  struct trace_t trace = {NULL, NULL, 7234, LOCATE_parser_prod___APlusExpr___replace_child};
+  val_t variable[5];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Local variable */
+  variable[2] =  param1;
+  /* Register variable[3]: Method return value and escape marker */
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___APlusExpr___replace_child, LOCATE_parser_prod, 7236); nit_exit(1);}
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___ASendExpr____n_expr(variable[0]) /*ASendExpr::_n_expr*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*PNode::parent=*/;
+      /* Register variable[4]: Result */
+      variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
+      if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___APlusExpr___replace_child, LOCATE_parser_prod, 7240); nit_exit(1);}
+      ATTR_parser_nodes___ASendExpr____n_expr(variable[0]) /*ASendExpr::_n_expr*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      ATTR_parser_nodes___ASendExpr____n_expr(variable[0]) /*ASendExpr::_n_expr*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label625;
+  }
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___ABinopExpr____n_expr2(variable[0]) /*ABinopExpr::_n_expr2*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*PNode::parent=*/;
+      /* Register variable[4]: Result */
+      variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
+      if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___APlusExpr___replace_child, LOCATE_parser_prod, 7250); nit_exit(1);}
+      ATTR_parser_nodes___ABinopExpr____n_expr2(variable[0]) /*ABinopExpr::_n_expr2*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      ATTR_parser_nodes___ABinopExpr____n_expr2(variable[0]) /*ABinopExpr::_n_expr2*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label625;
   }
-  return_label596: while(false);
+  return_label625: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___APlusExpr___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::APlusExpr::visit_all (src/parser//parser_prod.nit:6914,5--6920:28)"};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___ASendExpr____n_expr( self) /*APlusExpr::_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*/) /*PExpr::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___ASendExpr____n_expr( self) /*APlusExpr::_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) /*APlusExpr::_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*/) /*PExpr::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___ABinopExpr____n_expr2( self) /*APlusExpr::_n_expr2*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
+  struct trace_t trace = {NULL, NULL, 7259, LOCATE_parser_prod___APlusExpr___visit_all};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___ASendExpr____n_expr(variable[0]) /*ASendExpr::_n_expr*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___ASendExpr____n_expr(variable[0]) /*ASendExpr::_n_expr*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___ABinopExpr____n_expr2(variable[0]) /*ABinopExpr::_n_expr2*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___ABinopExpr____n_expr2(variable[0]) /*ABinopExpr::_n_expr2*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  return_label626: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___APlusExpr___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::APlusExpr::visit_all_reverse (src/parser//parser_prod.nit:6924,5--6930:28)"};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___ASendExpr____n_expr( self) /*APlusExpr::_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*/) /*PExpr::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___ASendExpr____n_expr( self) /*APlusExpr::_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) /*APlusExpr::_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*/) /*PExpr::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___ABinopExpr____n_expr2( self) /*APlusExpr::_n_expr2*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
+  struct trace_t trace = {NULL, NULL, 7269, LOCATE_parser_prod___APlusExpr___visit_all_reverse};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___ASendExpr____n_expr(variable[0]) /*ASendExpr::_n_expr*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___ASendExpr____n_expr(variable[0]) /*ASendExpr::_n_expr*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___ABinopExpr____n_expr2(variable[0]) /*ABinopExpr::_n_expr2*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___ABinopExpr____n_expr2(variable[0]) /*ABinopExpr::_n_expr2*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  return_label627: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AMinusExpr___n_expr__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AMinusExpr::n_expr= (src/parser//parser_prod.nit:6935,5--6939:20)"};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___APlusExpr___empty_init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 7216, LOCATE_parser_prod___APlusExpr___empty_init};
+  val_t variable[2];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  variable0 =  param0;
-  ATTR_parser_nodes___ASendExpr____n_expr( self) /*AMinusExpr::_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*/) /*PExpr::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PExpr::parent=*/;
-  }
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_APlusExpr].i]) return;
+  /* Register variable[1]: Method return value and escape marker */
+  return_label628: while(false);
+  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_APlusExpr].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AMinusExpr___n_expr2__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AMinusExpr::n_expr2= (src/parser//parser_prod.nit:6942,5--6946:20)"};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  variable0 =  param0;
-  ATTR_parser_nodes___ABinopExpr____n_expr2( self) /*AMinusExpr::_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*/) /*PExpr::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PExpr::parent=*/;
-  }
+void parser_prod___APlusExpr___init_aplusexpr(val_t  self, val_t  param0, val_t  param1, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 7218, LOCATE_parser_prod___APlusExpr___init_aplusexpr};
+  val_t variable[5];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Local variable */
+  variable[2] =  param1;
+  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_APlusExpr].i]) return;
+  /* Register variable[3]: Method return value and escape marker */
+  CALL_parser_prod___APlusExpr___empty_init(variable[0])(variable[0], init_table /*YYY*/) /*APlusExpr::empty_init*/;
+  ATTR_parser_nodes___ASendExpr____n_expr(variable[0]) /*ASendExpr::_n_expr*/ =  variable[1] /*n_expr*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_expr*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_expr*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n_expr*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_expr*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n_expr*/)( variable[1] /*n_expr*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n_expr*/)( variable[1] /*n_expr*/, variable[0]) /*PNode::parent=*/;
+  }
+  ATTR_parser_nodes___ABinopExpr____n_expr2(variable[0]) /*ABinopExpr::_n_expr2*/ =  variable[2] /*n_expr2*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*n_expr2*/ ==  NIT_NULL /*null*/) || (( variable[2] /*n_expr2*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*n_expr2*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*n_expr2*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*n_expr2*/)( variable[2] /*n_expr2*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[2] /*n_expr2*/)( variable[2] /*n_expr2*/, variable[0]) /*PNode::parent=*/;
+  }
+  return_label629: while(false);
+  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_APlusExpr].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AMinusExpr___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, "parser_prod::AMinusExpr::empty_init (src/parser//parser_prod.nit:6950,5--27)"};
+void parser_prod___AMinusExpr___n_expr__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 7280, LOCATE_parser_prod___AMinusExpr___n_expr__eq};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  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;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  ATTR_parser_nodes___ASendExpr____n_expr(variable[0]) /*ASendExpr::_n_expr*/ =  variable[1] /*n*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[0]) /*PNode::parent=*/;
+  }
+  return_label630: while(false);
   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, "parser_prod::AMinusExpr::init_aminusexpr (src/parser//parser_prod.nit:6952,5--6963:23)"};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  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) /*AMinusExpr::_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*/) /*PExpr::==*/)))))));
-  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) /*PExpr::parent=*/;
-  }
-  ATTR_parser_nodes___ABinopExpr____n_expr2( self) /*AMinusExpr::_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*/) /*PExpr::==*/)))))));
-  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) /*PExpr::parent=*/;
+void parser_prod___AMinusExpr___n_expr2__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 7287, LOCATE_parser_prod___AMinusExpr___n_expr2__eq};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  ATTR_parser_nodes___ABinopExpr____n_expr2(variable[0]) /*ABinopExpr::_n_expr2*/ =  variable[1] /*n*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[0]) /*PNode::parent=*/;
   }
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AMinusExpr].i] = 1;
+  return_label631: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AMinusExpr___replace_child(val_t  self, val_t  param0, val_t  param1) {
-  struct trace_t trace = {NULL, "parser_prod::AMinusExpr::replace_child (src/parser//parser_prod.nit:6967,5--6988:18)"};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  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*/) /*PNode::==*/)))))));
-  if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert failed: src/parser//parser_prod.nit:6969,9--32\n"); nit_exit(1);}
-  variable2 = ATTR_parser_nodes___ASendExpr____n_expr( self) /*AMinusExpr::_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*/) /*PExpr::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*PNode::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_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 failed: src/parser//parser_prod.nit:6973,3--28\n"); nit_exit(1);}
-      ATTR_parser_nodes___ASendExpr____n_expr( self) /*AMinusExpr::_n_expr*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___ASendExpr____n_expr( self) /*AMinusExpr::_n_expr*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label603;
-  }
-  variable2 = ATTR_parser_nodes___ABinopExpr____n_expr2( self) /*AMinusExpr::_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*/) /*PExpr::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*PNode::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_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 failed: src/parser//parser_prod.nit:6983,3--28\n"); nit_exit(1);}
-      ATTR_parser_nodes___ABinopExpr____n_expr2( self) /*AMinusExpr::_n_expr2*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___ABinopExpr____n_expr2( self) /*AMinusExpr::_n_expr2*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label603;
+  struct trace_t trace = {NULL, NULL, 7313, LOCATE_parser_prod___AMinusExpr___replace_child};
+  val_t variable[5];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Local variable */
+  variable[2] =  param1;
+  /* Register variable[3]: Method return value and escape marker */
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AMinusExpr___replace_child, LOCATE_parser_prod, 7315); nit_exit(1);}
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___ASendExpr____n_expr(variable[0]) /*ASendExpr::_n_expr*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*PNode::parent=*/;
+      /* Register variable[4]: Result */
+      variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
+      if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AMinusExpr___replace_child, LOCATE_parser_prod, 7319); nit_exit(1);}
+      ATTR_parser_nodes___ASendExpr____n_expr(variable[0]) /*ASendExpr::_n_expr*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      ATTR_parser_nodes___ASendExpr____n_expr(variable[0]) /*ASendExpr::_n_expr*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label632;
+  }
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___ABinopExpr____n_expr2(variable[0]) /*ABinopExpr::_n_expr2*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*PNode::parent=*/;
+      /* Register variable[4]: Result */
+      variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
+      if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AMinusExpr___replace_child, LOCATE_parser_prod, 7329); nit_exit(1);}
+      ATTR_parser_nodes___ABinopExpr____n_expr2(variable[0]) /*ABinopExpr::_n_expr2*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      ATTR_parser_nodes___ABinopExpr____n_expr2(variable[0]) /*ABinopExpr::_n_expr2*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label632;
   }
-  return_label603: while(false);
+  return_label632: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AMinusExpr___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AMinusExpr::visit_all (src/parser//parser_prod.nit:6992,5--6998:28)"};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___ASendExpr____n_expr( self) /*AMinusExpr::_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*/) /*PExpr::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___ASendExpr____n_expr( self) /*AMinusExpr::_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) /*AMinusExpr::_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*/) /*PExpr::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___ABinopExpr____n_expr2( self) /*AMinusExpr::_n_expr2*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
+  struct trace_t trace = {NULL, NULL, 7338, LOCATE_parser_prod___AMinusExpr___visit_all};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___ASendExpr____n_expr(variable[0]) /*ASendExpr::_n_expr*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___ASendExpr____n_expr(variable[0]) /*ASendExpr::_n_expr*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___ABinopExpr____n_expr2(variable[0]) /*ABinopExpr::_n_expr2*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___ABinopExpr____n_expr2(variable[0]) /*ABinopExpr::_n_expr2*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  return_label633: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AMinusExpr___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AMinusExpr::visit_all_reverse (src/parser//parser_prod.nit:7002,5--7008:28)"};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___ASendExpr____n_expr( self) /*AMinusExpr::_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*/) /*PExpr::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___ASendExpr____n_expr( self) /*AMinusExpr::_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) /*AMinusExpr::_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*/) /*PExpr::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___ABinopExpr____n_expr2( self) /*AMinusExpr::_n_expr2*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
+  struct trace_t trace = {NULL, NULL, 7348, LOCATE_parser_prod___AMinusExpr___visit_all_reverse};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___ASendExpr____n_expr(variable[0]) /*ASendExpr::_n_expr*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___ASendExpr____n_expr(variable[0]) /*ASendExpr::_n_expr*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___ABinopExpr____n_expr2(variable[0]) /*ABinopExpr::_n_expr2*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___ABinopExpr____n_expr2(variable[0]) /*ABinopExpr::_n_expr2*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  return_label634: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AStarshipExpr___n_expr__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AStarshipExpr::n_expr= (src/parser//parser_prod.nit:7013,5--7017:20)"};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___AMinusExpr___empty_init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 7295, LOCATE_parser_prod___AMinusExpr___empty_init};
+  val_t variable[2];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  variable0 =  param0;
-  ATTR_parser_nodes___ASendExpr____n_expr( self) /*AStarshipExpr::_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*/) /*PExpr::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PExpr::parent=*/;
-  }
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AMinusExpr].i]) return;
+  /* Register variable[1]: Method return value and escape marker */
+  return_label635: while(false);
+  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AMinusExpr].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AStarshipExpr___n_expr2__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AStarshipExpr::n_expr2= (src/parser//parser_prod.nit:7020,5--7024:20)"};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  variable0 =  param0;
-  ATTR_parser_nodes___ABinopExpr____n_expr2( self) /*AStarshipExpr::_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*/) /*PExpr::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PExpr::parent=*/;
-  }
+void parser_prod___AMinusExpr___init_aminusexpr(val_t  self, val_t  param0, val_t  param1, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 7297, LOCATE_parser_prod___AMinusExpr___init_aminusexpr};
+  val_t variable[5];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Local variable */
+  variable[2] =  param1;
+  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AMinusExpr].i]) return;
+  /* Register variable[3]: Method return value and escape marker */
+  CALL_parser_prod___AMinusExpr___empty_init(variable[0])(variable[0], init_table /*YYY*/) /*AMinusExpr::empty_init*/;
+  ATTR_parser_nodes___ASendExpr____n_expr(variable[0]) /*ASendExpr::_n_expr*/ =  variable[1] /*n_expr*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_expr*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_expr*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n_expr*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_expr*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n_expr*/)( variable[1] /*n_expr*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n_expr*/)( variable[1] /*n_expr*/, variable[0]) /*PNode::parent=*/;
+  }
+  ATTR_parser_nodes___ABinopExpr____n_expr2(variable[0]) /*ABinopExpr::_n_expr2*/ =  variable[2] /*n_expr2*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*n_expr2*/ ==  NIT_NULL /*null*/) || (( variable[2] /*n_expr2*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*n_expr2*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*n_expr2*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*n_expr2*/)( variable[2] /*n_expr2*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[2] /*n_expr2*/)( variable[2] /*n_expr2*/, variable[0]) /*PNode::parent=*/;
+  }
+  return_label636: while(false);
+  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AMinusExpr].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AStarshipExpr___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, "parser_prod::AStarshipExpr::empty_init (src/parser//parser_prod.nit:7028,5--27)"};
+void parser_prod___AStarshipExpr___n_expr__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 7359, LOCATE_parser_prod___AStarshipExpr___n_expr__eq};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  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;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  ATTR_parser_nodes___ASendExpr____n_expr(variable[0]) /*ASendExpr::_n_expr*/ =  variable[1] /*n*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[0]) /*PNode::parent=*/;
+  }
+  return_label637: while(false);
   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, "parser_prod::AStarshipExpr::init_astarshipexpr (src/parser//parser_prod.nit:7030,5--7041:23)"};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  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) /*AStarshipExpr::_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*/) /*PExpr::==*/)))))));
-  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) /*PExpr::parent=*/;
-  }
-  ATTR_parser_nodes___ABinopExpr____n_expr2( self) /*AStarshipExpr::_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*/) /*PExpr::==*/)))))));
-  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) /*PExpr::parent=*/;
+void parser_prod___AStarshipExpr___n_expr2__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 7366, LOCATE_parser_prod___AStarshipExpr___n_expr2__eq};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  ATTR_parser_nodes___ABinopExpr____n_expr2(variable[0]) /*ABinopExpr::_n_expr2*/ =  variable[1] /*n*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[0]) /*PNode::parent=*/;
   }
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AStarshipExpr].i] = 1;
+  return_label638: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AStarshipExpr___replace_child(val_t  self, val_t  param0, val_t  param1) {
-  struct trace_t trace = {NULL, "parser_prod::AStarshipExpr::replace_child (src/parser//parser_prod.nit:7045,5--7066:18)"};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  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*/) /*PNode::==*/)))))));
-  if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert failed: src/parser//parser_prod.nit:7047,9--32\n"); nit_exit(1);}
-  variable2 = ATTR_parser_nodes___ASendExpr____n_expr( self) /*AStarshipExpr::_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*/) /*PExpr::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*PNode::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_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 failed: src/parser//parser_prod.nit:7051,3--28\n"); nit_exit(1);}
-      ATTR_parser_nodes___ASendExpr____n_expr( self) /*AStarshipExpr::_n_expr*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___ASendExpr____n_expr( self) /*AStarshipExpr::_n_expr*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label610;
-  }
-  variable2 = ATTR_parser_nodes___ABinopExpr____n_expr2( self) /*AStarshipExpr::_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*/) /*PExpr::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*PNode::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_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 failed: src/parser//parser_prod.nit:7061,3--28\n"); nit_exit(1);}
-      ATTR_parser_nodes___ABinopExpr____n_expr2( self) /*AStarshipExpr::_n_expr2*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___ABinopExpr____n_expr2( self) /*AStarshipExpr::_n_expr2*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label610;
+  struct trace_t trace = {NULL, NULL, 7392, LOCATE_parser_prod___AStarshipExpr___replace_child};
+  val_t variable[5];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Local variable */
+  variable[2] =  param1;
+  /* Register variable[3]: Method return value and escape marker */
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AStarshipExpr___replace_child, LOCATE_parser_prod, 7394); nit_exit(1);}
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___ASendExpr____n_expr(variable[0]) /*ASendExpr::_n_expr*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*PNode::parent=*/;
+      /* Register variable[4]: Result */
+      variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
+      if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AStarshipExpr___replace_child, LOCATE_parser_prod, 7398); nit_exit(1);}
+      ATTR_parser_nodes___ASendExpr____n_expr(variable[0]) /*ASendExpr::_n_expr*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      ATTR_parser_nodes___ASendExpr____n_expr(variable[0]) /*ASendExpr::_n_expr*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label639;
+  }
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___ABinopExpr____n_expr2(variable[0]) /*ABinopExpr::_n_expr2*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*PNode::parent=*/;
+      /* Register variable[4]: Result */
+      variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
+      if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AStarshipExpr___replace_child, LOCATE_parser_prod, 7408); nit_exit(1);}
+      ATTR_parser_nodes___ABinopExpr____n_expr2(variable[0]) /*ABinopExpr::_n_expr2*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      ATTR_parser_nodes___ABinopExpr____n_expr2(variable[0]) /*ABinopExpr::_n_expr2*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label639;
   }
-  return_label610: while(false);
+  return_label639: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AStarshipExpr___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AStarshipExpr::visit_all (src/parser//parser_prod.nit:7070,5--7076:28)"};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___ASendExpr____n_expr( self) /*AStarshipExpr::_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*/) /*PExpr::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___ASendExpr____n_expr( self) /*AStarshipExpr::_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) /*AStarshipExpr::_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*/) /*PExpr::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___ABinopExpr____n_expr2( self) /*AStarshipExpr::_n_expr2*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
+  struct trace_t trace = {NULL, NULL, 7417, LOCATE_parser_prod___AStarshipExpr___visit_all};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___ASendExpr____n_expr(variable[0]) /*ASendExpr::_n_expr*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___ASendExpr____n_expr(variable[0]) /*ASendExpr::_n_expr*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___ABinopExpr____n_expr2(variable[0]) /*ABinopExpr::_n_expr2*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___ABinopExpr____n_expr2(variable[0]) /*ABinopExpr::_n_expr2*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  return_label640: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AStarshipExpr___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AStarshipExpr::visit_all_reverse (src/parser//parser_prod.nit:7080,5--7086:28)"};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___ASendExpr____n_expr( self) /*AStarshipExpr::_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*/) /*PExpr::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___ASendExpr____n_expr( self) /*AStarshipExpr::_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) /*AStarshipExpr::_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*/) /*PExpr::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___ABinopExpr____n_expr2( self) /*AStarshipExpr::_n_expr2*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
+  struct trace_t trace = {NULL, NULL, 7427, LOCATE_parser_prod___AStarshipExpr___visit_all_reverse};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___ASendExpr____n_expr(variable[0]) /*ASendExpr::_n_expr*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___ASendExpr____n_expr(variable[0]) /*ASendExpr::_n_expr*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___ABinopExpr____n_expr2(variable[0]) /*ABinopExpr::_n_expr2*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___ABinopExpr____n_expr2(variable[0]) /*ABinopExpr::_n_expr2*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  return_label641: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AStarExpr___n_expr__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AStarExpr::n_expr= (src/parser//parser_prod.nit:7091,5--7095:20)"};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___AStarshipExpr___empty_init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 7374, LOCATE_parser_prod___AStarshipExpr___empty_init};
+  val_t variable[2];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  variable0 =  param0;
-  ATTR_parser_nodes___ASendExpr____n_expr( self) /*AStarExpr::_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*/) /*PExpr::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PExpr::parent=*/;
-  }
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AStarshipExpr].i]) return;
+  /* Register variable[1]: Method return value and escape marker */
+  return_label642: while(false);
+  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AStarshipExpr].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AStarExpr___n_expr2__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AStarExpr::n_expr2= (src/parser//parser_prod.nit:7098,5--7102:20)"};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  variable0 =  param0;
-  ATTR_parser_nodes___ABinopExpr____n_expr2( self) /*AStarExpr::_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*/) /*PExpr::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PExpr::parent=*/;
-  }
+void parser_prod___AStarshipExpr___init_astarshipexpr(val_t  self, val_t  param0, val_t  param1, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 7376, LOCATE_parser_prod___AStarshipExpr___init_astarshipexpr};
+  val_t variable[5];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Local variable */
+  variable[2] =  param1;
+  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AStarshipExpr].i]) return;
+  /* Register variable[3]: Method return value and escape marker */
+  CALL_parser_prod___AStarshipExpr___empty_init(variable[0])(variable[0], init_table /*YYY*/) /*AStarshipExpr::empty_init*/;
+  ATTR_parser_nodes___ASendExpr____n_expr(variable[0]) /*ASendExpr::_n_expr*/ =  variable[1] /*n_expr*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_expr*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_expr*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n_expr*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_expr*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n_expr*/)( variable[1] /*n_expr*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n_expr*/)( variable[1] /*n_expr*/, variable[0]) /*PNode::parent=*/;
+  }
+  ATTR_parser_nodes___ABinopExpr____n_expr2(variable[0]) /*ABinopExpr::_n_expr2*/ =  variable[2] /*n_expr2*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*n_expr2*/ ==  NIT_NULL /*null*/) || (( variable[2] /*n_expr2*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*n_expr2*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*n_expr2*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*n_expr2*/)( variable[2] /*n_expr2*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[2] /*n_expr2*/)( variable[2] /*n_expr2*/, variable[0]) /*PNode::parent=*/;
+  }
+  return_label643: while(false);
+  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AStarshipExpr].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AStarExpr___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, "parser_prod::AStarExpr::empty_init (src/parser//parser_prod.nit:7106,5--27)"};
+void parser_prod___AStarExpr___n_expr__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 7438, LOCATE_parser_prod___AStarExpr___n_expr__eq};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  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;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  ATTR_parser_nodes___ASendExpr____n_expr(variable[0]) /*ASendExpr::_n_expr*/ =  variable[1] /*n*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[0]) /*PNode::parent=*/;
+  }
+  return_label644: while(false);
   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, "parser_prod::AStarExpr::init_astarexpr (src/parser//parser_prod.nit:7108,5--7119:23)"};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
+void parser_prod___AStarExpr___n_expr2__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 7445, LOCATE_parser_prod___AStarExpr___n_expr2__eq};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  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) /*AStarExpr::_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*/) /*PExpr::==*/)))))));
-  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) /*PExpr::parent=*/;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  ATTR_parser_nodes___ABinopExpr____n_expr2(variable[0]) /*ABinopExpr::_n_expr2*/ =  variable[1] /*n*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[0]) /*PNode::parent=*/;
   }
-  ATTR_parser_nodes___ABinopExpr____n_expr2( self) /*AStarExpr::_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*/) /*PExpr::==*/)))))));
-  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) /*PExpr::parent=*/;
-  }
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AStarExpr].i] = 1;
+  return_label645: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AStarExpr___replace_child(val_t  self, val_t  param0, val_t  param1) {
-  struct trace_t trace = {NULL, "parser_prod::AStarExpr::replace_child (src/parser//parser_prod.nit:7123,5--7144:18)"};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  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*/) /*PNode::==*/)))))));
-  if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert failed: src/parser//parser_prod.nit:7125,9--32\n"); nit_exit(1);}
-  variable2 = ATTR_parser_nodes___ASendExpr____n_expr( self) /*AStarExpr::_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*/) /*PExpr::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*PNode::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_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 failed: src/parser//parser_prod.nit:7129,3--28\n"); nit_exit(1);}
-      ATTR_parser_nodes___ASendExpr____n_expr( self) /*AStarExpr::_n_expr*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___ASendExpr____n_expr( self) /*AStarExpr::_n_expr*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label617;
-  }
-  variable2 = ATTR_parser_nodes___ABinopExpr____n_expr2( self) /*AStarExpr::_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*/) /*PExpr::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*PNode::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_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 failed: src/parser//parser_prod.nit:7139,3--28\n"); nit_exit(1);}
-      ATTR_parser_nodes___ABinopExpr____n_expr2( self) /*AStarExpr::_n_expr2*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___ABinopExpr____n_expr2( self) /*AStarExpr::_n_expr2*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label617;
+  struct trace_t trace = {NULL, NULL, 7471, LOCATE_parser_prod___AStarExpr___replace_child};
+  val_t variable[5];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Local variable */
+  variable[2] =  param1;
+  /* Register variable[3]: Method return value and escape marker */
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AStarExpr___replace_child, LOCATE_parser_prod, 7473); nit_exit(1);}
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___ASendExpr____n_expr(variable[0]) /*ASendExpr::_n_expr*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*PNode::parent=*/;
+      /* Register variable[4]: Result */
+      variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
+      if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AStarExpr___replace_child, LOCATE_parser_prod, 7477); nit_exit(1);}
+      ATTR_parser_nodes___ASendExpr____n_expr(variable[0]) /*ASendExpr::_n_expr*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      ATTR_parser_nodes___ASendExpr____n_expr(variable[0]) /*ASendExpr::_n_expr*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label646;
+  }
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___ABinopExpr____n_expr2(variable[0]) /*ABinopExpr::_n_expr2*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*PNode::parent=*/;
+      /* Register variable[4]: Result */
+      variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
+      if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AStarExpr___replace_child, LOCATE_parser_prod, 7487); nit_exit(1);}
+      ATTR_parser_nodes___ABinopExpr____n_expr2(variable[0]) /*ABinopExpr::_n_expr2*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      ATTR_parser_nodes___ABinopExpr____n_expr2(variable[0]) /*ABinopExpr::_n_expr2*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label646;
   }
-  return_label617: while(false);
+  return_label646: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AStarExpr___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AStarExpr::visit_all (src/parser//parser_prod.nit:7148,5--7154:28)"};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___ASendExpr____n_expr( self) /*AStarExpr::_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*/) /*PExpr::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___ASendExpr____n_expr( self) /*AStarExpr::_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) /*AStarExpr::_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*/) /*PExpr::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___ABinopExpr____n_expr2( self) /*AStarExpr::_n_expr2*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
+  struct trace_t trace = {NULL, NULL, 7496, LOCATE_parser_prod___AStarExpr___visit_all};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___ASendExpr____n_expr(variable[0]) /*ASendExpr::_n_expr*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___ASendExpr____n_expr(variable[0]) /*ASendExpr::_n_expr*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___ABinopExpr____n_expr2(variable[0]) /*ABinopExpr::_n_expr2*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___ABinopExpr____n_expr2(variable[0]) /*ABinopExpr::_n_expr2*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
+  return_label647: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AStarExpr___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AStarExpr::visit_all_reverse (src/parser//parser_prod.nit:7158,5--7164:28)"};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___ASendExpr____n_expr( self) /*AStarExpr::_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*/) /*PExpr::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___ASendExpr____n_expr( self) /*AStarExpr::_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) /*AStarExpr::_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*/) /*PExpr::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___ABinopExpr____n_expr2( self) /*AStarExpr::_n_expr2*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
+  struct trace_t trace = {NULL, NULL, 7506, LOCATE_parser_prod___AStarExpr___visit_all_reverse};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___ASendExpr____n_expr(variable[0]) /*ASendExpr::_n_expr*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___ASendExpr____n_expr(variable[0]) /*ASendExpr::_n_expr*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___ABinopExpr____n_expr2(variable[0]) /*ABinopExpr::_n_expr2*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___ABinopExpr____n_expr2(variable[0]) /*ABinopExpr::_n_expr2*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  return_label648: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___ASlashExpr___n_expr__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::ASlashExpr::n_expr= (src/parser//parser_prod.nit:7169,5--7173:20)"};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___AStarExpr___empty_init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 7453, LOCATE_parser_prod___AStarExpr___empty_init};
+  val_t variable[2];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  variable0 =  param0;
-  ATTR_parser_nodes___ASendExpr____n_expr( self) /*ASlashExpr::_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*/) /*PExpr::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PExpr::parent=*/;
-  }
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AStarExpr].i]) return;
+  /* Register variable[1]: Method return value and escape marker */
+  return_label649: while(false);
+  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AStarExpr].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser_prod___ASlashExpr___n_expr2__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::ASlashExpr::n_expr2= (src/parser//parser_prod.nit:7176,5--7180:20)"};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  variable0 =  param0;
-  ATTR_parser_nodes___ABinopExpr____n_expr2( self) /*ASlashExpr::_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*/) /*PExpr::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PExpr::parent=*/;
-  }
+void parser_prod___AStarExpr___init_astarexpr(val_t  self, val_t  param0, val_t  param1, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 7455, LOCATE_parser_prod___AStarExpr___init_astarexpr};
+  val_t variable[5];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Local variable */
+  variable[2] =  param1;
+  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AStarExpr].i]) return;
+  /* Register variable[3]: Method return value and escape marker */
+  CALL_parser_prod___AStarExpr___empty_init(variable[0])(variable[0], init_table /*YYY*/) /*AStarExpr::empty_init*/;
+  ATTR_parser_nodes___ASendExpr____n_expr(variable[0]) /*ASendExpr::_n_expr*/ =  variable[1] /*n_expr*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_expr*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_expr*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n_expr*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_expr*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n_expr*/)( variable[1] /*n_expr*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n_expr*/)( variable[1] /*n_expr*/, variable[0]) /*PNode::parent=*/;
+  }
+  ATTR_parser_nodes___ABinopExpr____n_expr2(variable[0]) /*ABinopExpr::_n_expr2*/ =  variable[2] /*n_expr2*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*n_expr2*/ ==  NIT_NULL /*null*/) || (( variable[2] /*n_expr2*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*n_expr2*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*n_expr2*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*n_expr2*/)( variable[2] /*n_expr2*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[2] /*n_expr2*/)( variable[2] /*n_expr2*/, variable[0]) /*PNode::parent=*/;
+  }
+  return_label650: while(false);
+  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AStarExpr].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser_prod___ASlashExpr___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, "parser_prod::ASlashExpr::empty_init (src/parser//parser_prod.nit:7184,5--27)"};
+void parser_prod___ASlashExpr___n_expr__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 7517, LOCATE_parser_prod___ASlashExpr___n_expr__eq};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  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;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  ATTR_parser_nodes___ASendExpr____n_expr(variable[0]) /*ASendExpr::_n_expr*/ =  variable[1] /*n*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[0]) /*PNode::parent=*/;
+  }
+  return_label651: while(false);
   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, "parser_prod::ASlashExpr::init_aslashexpr (src/parser//parser_prod.nit:7186,5--7197:23)"};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
+void parser_prod___ASlashExpr___n_expr2__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 7524, LOCATE_parser_prod___ASlashExpr___n_expr2__eq};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  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) /*ASlashExpr::_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*/) /*PExpr::==*/)))))));
-  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) /*PExpr::parent=*/;
-  }
-  ATTR_parser_nodes___ABinopExpr____n_expr2( self) /*ASlashExpr::_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*/) /*PExpr::==*/)))))));
-  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) /*PExpr::parent=*/;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  ATTR_parser_nodes___ABinopExpr____n_expr2(variable[0]) /*ABinopExpr::_n_expr2*/ =  variable[1] /*n*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[0]) /*PNode::parent=*/;
   }
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ASlashExpr].i] = 1;
+  return_label652: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___ASlashExpr___replace_child(val_t  self, val_t  param0, val_t  param1) {
-  struct trace_t trace = {NULL, "parser_prod::ASlashExpr::replace_child (src/parser//parser_prod.nit:7201,5--7222:18)"};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  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*/) /*PNode::==*/)))))));
-  if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert failed: src/parser//parser_prod.nit:7203,9--32\n"); nit_exit(1);}
-  variable2 = ATTR_parser_nodes___ASendExpr____n_expr( self) /*ASlashExpr::_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*/) /*PExpr::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*PNode::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_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 failed: src/parser//parser_prod.nit:7207,3--28\n"); nit_exit(1);}
-      ATTR_parser_nodes___ASendExpr____n_expr( self) /*ASlashExpr::_n_expr*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___ASendExpr____n_expr( self) /*ASlashExpr::_n_expr*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label624;
-  }
-  variable2 = ATTR_parser_nodes___ABinopExpr____n_expr2( self) /*ASlashExpr::_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*/) /*PExpr::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*PNode::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_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 failed: src/parser//parser_prod.nit:7217,3--28\n"); nit_exit(1);}
-      ATTR_parser_nodes___ABinopExpr____n_expr2( self) /*ASlashExpr::_n_expr2*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___ABinopExpr____n_expr2( self) /*ASlashExpr::_n_expr2*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label624;
+  struct trace_t trace = {NULL, NULL, 7550, LOCATE_parser_prod___ASlashExpr___replace_child};
+  val_t variable[5];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Local variable */
+  variable[2] =  param1;
+  /* Register variable[3]: Method return value and escape marker */
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ASlashExpr___replace_child, LOCATE_parser_prod, 7552); nit_exit(1);}
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___ASendExpr____n_expr(variable[0]) /*ASendExpr::_n_expr*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*PNode::parent=*/;
+      /* Register variable[4]: Result */
+      variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
+      if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ASlashExpr___replace_child, LOCATE_parser_prod, 7556); nit_exit(1);}
+      ATTR_parser_nodes___ASendExpr____n_expr(variable[0]) /*ASendExpr::_n_expr*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      ATTR_parser_nodes___ASendExpr____n_expr(variable[0]) /*ASendExpr::_n_expr*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label653;
+  }
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___ABinopExpr____n_expr2(variable[0]) /*ABinopExpr::_n_expr2*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*PNode::parent=*/;
+      /* Register variable[4]: Result */
+      variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
+      if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ASlashExpr___replace_child, LOCATE_parser_prod, 7566); nit_exit(1);}
+      ATTR_parser_nodes___ABinopExpr____n_expr2(variable[0]) /*ABinopExpr::_n_expr2*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      ATTR_parser_nodes___ABinopExpr____n_expr2(variable[0]) /*ABinopExpr::_n_expr2*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label653;
   }
-  return_label624: while(false);
+  return_label653: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___ASlashExpr___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::ASlashExpr::visit_all (src/parser//parser_prod.nit:7226,5--7232:28)"};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___ASendExpr____n_expr( self) /*ASlashExpr::_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*/) /*PExpr::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___ASendExpr____n_expr( self) /*ASlashExpr::_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) /*ASlashExpr::_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*/) /*PExpr::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___ABinopExpr____n_expr2( self) /*ASlashExpr::_n_expr2*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
+  struct trace_t trace = {NULL, NULL, 7575, LOCATE_parser_prod___ASlashExpr___visit_all};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___ASendExpr____n_expr(variable[0]) /*ASendExpr::_n_expr*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___ASendExpr____n_expr(variable[0]) /*ASendExpr::_n_expr*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___ABinopExpr____n_expr2(variable[0]) /*ABinopExpr::_n_expr2*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___ABinopExpr____n_expr2(variable[0]) /*ABinopExpr::_n_expr2*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  return_label654: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___ASlashExpr___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::ASlashExpr::visit_all_reverse (src/parser//parser_prod.nit:7236,5--7242:28)"};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___ASendExpr____n_expr( self) /*ASlashExpr::_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*/) /*PExpr::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___ASendExpr____n_expr( self) /*ASlashExpr::_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) /*ASlashExpr::_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*/) /*PExpr::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___ABinopExpr____n_expr2( self) /*ASlashExpr::_n_expr2*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
+  struct trace_t trace = {NULL, NULL, 7585, LOCATE_parser_prod___ASlashExpr___visit_all_reverse};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___ASendExpr____n_expr(variable[0]) /*ASendExpr::_n_expr*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___ASendExpr____n_expr(variable[0]) /*ASendExpr::_n_expr*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___ABinopExpr____n_expr2(variable[0]) /*ABinopExpr::_n_expr2*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___ABinopExpr____n_expr2(variable[0]) /*ABinopExpr::_n_expr2*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  return_label655: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___APercentExpr___n_expr__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::APercentExpr::n_expr= (src/parser//parser_prod.nit:7247,5--7251:20)"};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___ASlashExpr___empty_init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 7532, LOCATE_parser_prod___ASlashExpr___empty_init};
+  val_t variable[2];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  variable0 =  param0;
-  ATTR_parser_nodes___ASendExpr____n_expr( self) /*APercentExpr::_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*/) /*PExpr::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PExpr::parent=*/;
-  }
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ASlashExpr].i]) return;
+  /* Register variable[1]: Method return value and escape marker */
+  return_label656: while(false);
+  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ASlashExpr].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser_prod___APercentExpr___n_expr2__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::APercentExpr::n_expr2= (src/parser//parser_prod.nit:7254,5--7258:20)"};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  variable0 =  param0;
-  ATTR_parser_nodes___ABinopExpr____n_expr2( self) /*APercentExpr::_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*/) /*PExpr::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PExpr::parent=*/;
+void parser_prod___ASlashExpr___init_aslashexpr(val_t  self, val_t  param0, val_t  param1, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 7534, LOCATE_parser_prod___ASlashExpr___init_aslashexpr};
+  val_t variable[5];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Local variable */
+  variable[2] =  param1;
+  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ASlashExpr].i]) return;
+  /* Register variable[3]: Method return value and escape marker */
+  CALL_parser_prod___ASlashExpr___empty_init(variable[0])(variable[0], init_table /*YYY*/) /*ASlashExpr::empty_init*/;
+  ATTR_parser_nodes___ASendExpr____n_expr(variable[0]) /*ASendExpr::_n_expr*/ =  variable[1] /*n_expr*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_expr*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_expr*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n_expr*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_expr*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n_expr*/)( variable[1] /*n_expr*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n_expr*/)( variable[1] /*n_expr*/, variable[0]) /*PNode::parent=*/;
+  }
+  ATTR_parser_nodes___ABinopExpr____n_expr2(variable[0]) /*ABinopExpr::_n_expr2*/ =  variable[2] /*n_expr2*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*n_expr2*/ ==  NIT_NULL /*null*/) || (( variable[2] /*n_expr2*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*n_expr2*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*n_expr2*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*n_expr2*/)( variable[2] /*n_expr2*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[2] /*n_expr2*/)( variable[2] /*n_expr2*/, variable[0]) /*PNode::parent=*/;
   }
+  return_label657: while(false);
+  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ASlashExpr].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser_prod___APercentExpr___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, "parser_prod::APercentExpr::empty_init (src/parser//parser_prod.nit:7262,5--27)"};
+void parser_prod___APercentExpr___n_expr__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 7596, LOCATE_parser_prod___APercentExpr___n_expr__eq};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  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;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  ATTR_parser_nodes___ASendExpr____n_expr(variable[0]) /*ASendExpr::_n_expr*/ =  variable[1] /*n*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[0]) /*PNode::parent=*/;
+  }
+  return_label658: while(false);
   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, "parser_prod::APercentExpr::init_apercentexpr (src/parser//parser_prod.nit:7264,5--7275:23)"};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
+void parser_prod___APercentExpr___n_expr2__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 7603, LOCATE_parser_prod___APercentExpr___n_expr2__eq};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  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) /*APercentExpr::_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*/) /*PExpr::==*/)))))));
-  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) /*PExpr::parent=*/;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  ATTR_parser_nodes___ABinopExpr____n_expr2(variable[0]) /*ABinopExpr::_n_expr2*/ =  variable[1] /*n*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[0]) /*PNode::parent=*/;
   }
-  ATTR_parser_nodes___ABinopExpr____n_expr2( self) /*APercentExpr::_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*/) /*PExpr::==*/)))))));
-  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) /*PExpr::parent=*/;
-  }
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_APercentExpr].i] = 1;
+  return_label659: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___APercentExpr___replace_child(val_t  self, val_t  param0, val_t  param1) {
-  struct trace_t trace = {NULL, "parser_prod::APercentExpr::replace_child (src/parser//parser_prod.nit:7279,5--7300:18)"};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  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*/) /*PNode::==*/)))))));
-  if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert failed: src/parser//parser_prod.nit:7281,9--32\n"); nit_exit(1);}
-  variable2 = ATTR_parser_nodes___ASendExpr____n_expr( self) /*APercentExpr::_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*/) /*PExpr::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*PNode::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_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 failed: src/parser//parser_prod.nit:7285,3--28\n"); nit_exit(1);}
-      ATTR_parser_nodes___ASendExpr____n_expr( self) /*APercentExpr::_n_expr*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___ASendExpr____n_expr( self) /*APercentExpr::_n_expr*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label631;
-  }
-  variable2 = ATTR_parser_nodes___ABinopExpr____n_expr2( self) /*APercentExpr::_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*/) /*PExpr::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*PNode::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_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 failed: src/parser//parser_prod.nit:7295,3--28\n"); nit_exit(1);}
-      ATTR_parser_nodes___ABinopExpr____n_expr2( self) /*APercentExpr::_n_expr2*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___ABinopExpr____n_expr2( self) /*APercentExpr::_n_expr2*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label631;
+  struct trace_t trace = {NULL, NULL, 7629, LOCATE_parser_prod___APercentExpr___replace_child};
+  val_t variable[5];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Local variable */
+  variable[2] =  param1;
+  /* Register variable[3]: Method return value and escape marker */
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___APercentExpr___replace_child, LOCATE_parser_prod, 7631); nit_exit(1);}
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___ASendExpr____n_expr(variable[0]) /*ASendExpr::_n_expr*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*PNode::parent=*/;
+      /* Register variable[4]: Result */
+      variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
+      if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___APercentExpr___replace_child, LOCATE_parser_prod, 7635); nit_exit(1);}
+      ATTR_parser_nodes___ASendExpr____n_expr(variable[0]) /*ASendExpr::_n_expr*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      ATTR_parser_nodes___ASendExpr____n_expr(variable[0]) /*ASendExpr::_n_expr*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label660;
+  }
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___ABinopExpr____n_expr2(variable[0]) /*ABinopExpr::_n_expr2*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*PNode::parent=*/;
+      /* Register variable[4]: Result */
+      variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
+      if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___APercentExpr___replace_child, LOCATE_parser_prod, 7645); nit_exit(1);}
+      ATTR_parser_nodes___ABinopExpr____n_expr2(variable[0]) /*ABinopExpr::_n_expr2*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      ATTR_parser_nodes___ABinopExpr____n_expr2(variable[0]) /*ABinopExpr::_n_expr2*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label660;
   }
-  return_label631: while(false);
+  return_label660: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___APercentExpr___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::APercentExpr::visit_all (src/parser//parser_prod.nit:7304,5--7310:28)"};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___ASendExpr____n_expr( self) /*APercentExpr::_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*/) /*PExpr::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___ASendExpr____n_expr( self) /*APercentExpr::_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) /*APercentExpr::_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*/) /*PExpr::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___ABinopExpr____n_expr2( self) /*APercentExpr::_n_expr2*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
+  struct trace_t trace = {NULL, NULL, 7654, LOCATE_parser_prod___APercentExpr___visit_all};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___ASendExpr____n_expr(variable[0]) /*ASendExpr::_n_expr*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___ASendExpr____n_expr(variable[0]) /*ASendExpr::_n_expr*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___ABinopExpr____n_expr2(variable[0]) /*ABinopExpr::_n_expr2*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___ABinopExpr____n_expr2(variable[0]) /*ABinopExpr::_n_expr2*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  return_label661: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___APercentExpr___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::APercentExpr::visit_all_reverse (src/parser//parser_prod.nit:7314,5--7320:28)"};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___ASendExpr____n_expr( self) /*APercentExpr::_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*/) /*PExpr::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___ASendExpr____n_expr( self) /*APercentExpr::_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) /*APercentExpr::_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*/) /*PExpr::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___ABinopExpr____n_expr2( self) /*APercentExpr::_n_expr2*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
+  struct trace_t trace = {NULL, NULL, 7664, LOCATE_parser_prod___APercentExpr___visit_all_reverse};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___ASendExpr____n_expr(variable[0]) /*ASendExpr::_n_expr*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___ASendExpr____n_expr(variable[0]) /*ASendExpr::_n_expr*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___ABinopExpr____n_expr2(variable[0]) /*ABinopExpr::_n_expr2*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___ABinopExpr____n_expr2(variable[0]) /*ABinopExpr::_n_expr2*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  return_label662: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AUminusExpr___n_minus__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AUminusExpr::n_minus= (src/parser//parser_prod.nit:7325,5--7329:20)"};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___APercentExpr___empty_init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 7611, LOCATE_parser_prod___APercentExpr___empty_init};
+  val_t variable[2];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  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*/) /*TMinus::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*TMinus::parent=*/;
-  }
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_APercentExpr].i]) return;
+  /* Register variable[1]: Method return value and escape marker */
+  return_label663: while(false);
+  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_APercentExpr].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AUminusExpr___n_expr__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AUminusExpr::n_expr= (src/parser//parser_prod.nit:7332,5--7336:20)"};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  variable0 =  param0;
-  ATTR_parser_nodes___ASendExpr____n_expr( self) /*AUminusExpr::_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*/) /*PExpr::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PExpr::parent=*/;
-  }
+void parser_prod___APercentExpr___init_apercentexpr(val_t  self, val_t  param0, val_t  param1, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 7613, LOCATE_parser_prod___APercentExpr___init_apercentexpr};
+  val_t variable[5];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Local variable */
+  variable[2] =  param1;
+  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_APercentExpr].i]) return;
+  /* Register variable[3]: Method return value and escape marker */
+  CALL_parser_prod___APercentExpr___empty_init(variable[0])(variable[0], init_table /*YYY*/) /*APercentExpr::empty_init*/;
+  ATTR_parser_nodes___ASendExpr____n_expr(variable[0]) /*ASendExpr::_n_expr*/ =  variable[1] /*n_expr*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_expr*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_expr*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n_expr*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_expr*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n_expr*/)( variable[1] /*n_expr*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n_expr*/)( variable[1] /*n_expr*/, variable[0]) /*PNode::parent=*/;
+  }
+  ATTR_parser_nodes___ABinopExpr____n_expr2(variable[0]) /*ABinopExpr::_n_expr2*/ =  variable[2] /*n_expr2*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*n_expr2*/ ==  NIT_NULL /*null*/) || (( variable[2] /*n_expr2*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*n_expr2*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*n_expr2*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*n_expr2*/)( variable[2] /*n_expr2*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[2] /*n_expr2*/)( variable[2] /*n_expr2*/, variable[0]) /*PNode::parent=*/;
+  }
+  return_label664: while(false);
+  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_APercentExpr].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AUminusExpr___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, "parser_prod::AUminusExpr::empty_init (src/parser//parser_prod.nit:7340,5--27)"};
+void parser_prod___AUminusExpr___n_expr__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 7682, LOCATE_parser_prod___AUminusExpr___n_expr__eq};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  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;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  ATTR_parser_nodes___ASendExpr____n_expr(variable[0]) /*ASendExpr::_n_expr*/ =  variable[1] /*n*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[0]) /*PNode::parent=*/;
+  }
+  return_label665: while(false);
   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, "parser_prod::AUminusExpr::init_auminusexpr (src/parser//parser_prod.nit:7342,5--7353:22)"};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  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*/) /*TMinus::==*/)))))));
-  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) /*TMinus::parent=*/;
-  }
-  ATTR_parser_nodes___ASendExpr____n_expr( self) /*AUminusExpr::_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*/) /*PExpr::==*/)))))));
-  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) /*PExpr::parent=*/;
+void parser_prod___AUminusExpr___n_minus__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 7675, LOCATE_parser_prod___AUminusExpr___n_minus__eq};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  ATTR_parser_nodes___AUminusExpr____n_minus(variable[0]) /*AUminusExpr::_n_minus*/ =  variable[1] /*n*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[0]) /*PNode::parent=*/;
   }
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AUminusExpr].i] = 1;
+  return_label666: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AUminusExpr___replace_child(val_t  self, val_t  param0, val_t  param1) {
-  struct trace_t trace = {NULL, "parser_prod::AUminusExpr::replace_child (src/parser//parser_prod.nit:7357,5--7378:18)"};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  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*/) /*PNode::==*/)))))));
-  if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert failed: src/parser//parser_prod.nit:7359,9--32\n"); 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*/) /*TMinus::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*PNode::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_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 failed: src/parser//parser_prod.nit:7363,3--29\n"); 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_label638;
-  }
-  variable2 = ATTR_parser_nodes___ASendExpr____n_expr( self) /*AUminusExpr::_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*/) /*PExpr::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*PNode::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_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 failed: src/parser//parser_prod.nit:7373,3--28\n"); nit_exit(1);}
-      ATTR_parser_nodes___ASendExpr____n_expr( self) /*AUminusExpr::_n_expr*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___ASendExpr____n_expr( self) /*AUminusExpr::_n_expr*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label638;
+  struct trace_t trace = {NULL, NULL, 7708, LOCATE_parser_prod___AUminusExpr___replace_child};
+  val_t variable[5];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Local variable */
+  variable[2] =  param1;
+  /* Register variable[3]: Method return value and escape marker */
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AUminusExpr___replace_child, LOCATE_parser_prod, 7710); nit_exit(1);}
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___AUminusExpr____n_minus(variable[0]) /*AUminusExpr::_n_minus*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*PNode::parent=*/;
+      /* Register variable[4]: Result */
+      variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_TMinus, ID_TMinus)) /*cast TMinus*/;
+      if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AUminusExpr___replace_child, LOCATE_parser_prod, 7714); nit_exit(1);}
+      ATTR_parser_nodes___AUminusExpr____n_minus(variable[0]) /*AUminusExpr::_n_minus*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      ATTR_parser_nodes___AUminusExpr____n_minus(variable[0]) /*AUminusExpr::_n_minus*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label667;
+  }
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___ASendExpr____n_expr(variable[0]) /*ASendExpr::_n_expr*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*PNode::parent=*/;
+      /* Register variable[4]: Result */
+      variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
+      if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AUminusExpr___replace_child, LOCATE_parser_prod, 7724); nit_exit(1);}
+      ATTR_parser_nodes___ASendExpr____n_expr(variable[0]) /*ASendExpr::_n_expr*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      ATTR_parser_nodes___ASendExpr____n_expr(variable[0]) /*ASendExpr::_n_expr*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label667;
   }
-  return_label638: while(false);
+  return_label667: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AUminusExpr___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AUminusExpr::visit_all (src/parser//parser_prod.nit:7382,5--7388:27)"};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  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*/) /*TMinus::==*/)))))));
-  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) /*AUminusExpr::_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*/) /*PExpr::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___ASendExpr____n_expr( self) /*AUminusExpr::_n_expr*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
+  struct trace_t trace = {NULL, NULL, 7733, LOCATE_parser_prod___AUminusExpr___visit_all};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AUminusExpr____n_minus(variable[0]) /*AUminusExpr::_n_minus*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AUminusExpr____n_minus(variable[0]) /*AUminusExpr::_n_minus*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___ASendExpr____n_expr(variable[0]) /*ASendExpr::_n_expr*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___ASendExpr____n_expr(variable[0]) /*ASendExpr::_n_expr*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  return_label668: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AUminusExpr___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AUminusExpr::visit_all_reverse (src/parser//parser_prod.nit:7392,5--7398:27)"};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  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*/) /*TMinus::==*/)))))));
-  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) /*AUminusExpr::_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*/) /*PExpr::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___ASendExpr____n_expr( self) /*AUminusExpr::_n_expr*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
+  struct trace_t trace = {NULL, NULL, 7743, LOCATE_parser_prod___AUminusExpr___visit_all_reverse};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AUminusExpr____n_minus(variable[0]) /*AUminusExpr::_n_minus*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AUminusExpr____n_minus(variable[0]) /*AUminusExpr::_n_minus*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___ASendExpr____n_expr(variable[0]) /*ASendExpr::_n_expr*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___ASendExpr____n_expr(variable[0]) /*ASendExpr::_n_expr*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  return_label669: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___ANewExpr___n_kwnew__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::ANewExpr::n_kwnew= (src/parser//parser_prod.nit:7403,5--7407:20)"};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___AUminusExpr___empty_init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 7690, LOCATE_parser_prod___AUminusExpr___empty_init};
+  val_t variable[2];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  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*/) /*TKwnew::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*TKwnew::parent=*/;
-  }
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AUminusExpr].i]) return;
+  /* Register variable[1]: Method return value and escape marker */
+  return_label670: while(false);
+  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AUminusExpr].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser_prod___ANewExpr___n_type__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::ANewExpr::n_type= (src/parser//parser_prod.nit:7410,5--7414:20)"};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  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*/) /*PType::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PType::parent=*/;
-  }
+void parser_prod___AUminusExpr___init_auminusexpr(val_t  self, val_t  param0, val_t  param1, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 7692, LOCATE_parser_prod___AUminusExpr___init_auminusexpr};
+  val_t variable[5];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Local variable */
+  variable[2] =  param1;
+  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AUminusExpr].i]) return;
+  /* Register variable[3]: Method return value and escape marker */
+  CALL_parser_prod___AUminusExpr___empty_init(variable[0])(variable[0], init_table /*YYY*/) /*AUminusExpr::empty_init*/;
+  ATTR_parser_nodes___AUminusExpr____n_minus(variable[0]) /*AUminusExpr::_n_minus*/ =  variable[1] /*n_minus*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_minus*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_minus*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n_minus*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_minus*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n_minus*/)( variable[1] /*n_minus*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n_minus*/)( variable[1] /*n_minus*/, variable[0]) /*PNode::parent=*/;
+  }
+  ATTR_parser_nodes___ASendExpr____n_expr(variable[0]) /*ASendExpr::_n_expr*/ =  variable[2] /*n_expr*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*n_expr*/ ==  NIT_NULL /*null*/) || (( variable[2] /*n_expr*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*n_expr*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*n_expr*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*n_expr*/)( variable[2] /*n_expr*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[2] /*n_expr*/)( variable[2] /*n_expr*/, variable[0]) /*PNode::parent=*/;
+  }
+  return_label671: while(false);
+  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AUminusExpr].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser_prod___ANewExpr___n_id__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::ANewExpr::n_id= (src/parser//parser_prod.nit:7417,5--7421:20)"};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___ANewExpr___n_kwnew__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 7754, LOCATE_parser_prod___ANewExpr___n_kwnew__eq};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  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*/) /*TId::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*TId::parent=*/;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  ATTR_parser_nodes___ANewExpr____n_kwnew(variable[0]) /*ANewExpr::_n_kwnew*/ =  variable[1] /*n*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[0]) /*PNode::parent=*/;
   }
+  return_label672: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___ANewExpr___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, "parser_prod::ANewExpr::empty_init (src/parser//parser_prod.nit:7425,5--27)"};
+void parser_prod___ANewExpr___n_type__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 7761, LOCATE_parser_prod___ANewExpr___n_type__eq};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ANewExpr].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ANewExpr].i] = 1;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  ATTR_parser_nodes___ANewExpr____n_type(variable[0]) /*ANewExpr::_n_type*/ =  variable[1] /*n*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[0]) /*PNode::parent=*/;
+  }
+  return_label673: while(false);
   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, "parser_prod::ANewExpr::init_anewexpr (src/parser//parser_prod.nit:7427,5--7450:17)"};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  val_t variable3;
-  val_t variable4;
-    val_t variable5;
-    val_t variable6;
-  trace.prev = tracehead; tracehead = &trace;
-  variable0 =  param0;
-  variable1 =  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*/) /*TKwnew::==*/)))))));
-  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) /*TKwnew::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*/) /*PType::==*/)))))));
-  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) /*PType::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*/) /*TId::==*/)))))));
-  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) /*TId::parent=*/;
-  }
-  variable4 = NEW_list___List___init(); /*new List[PExpr]*/
-  ATTR_parser_nodes___ANewExpr____n_args( self) /*ANewExpr::_n_args*/ = variable4;
-  variable4 = ((array___AbstractArray___iterator_t)CALL( variable3 /*n_args*/,COLOR_abstract_collection___Collection___iterator))( variable3 /*n_args*/) /*Array::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 failed: src/parser//parser_prod.nit:7448,3--20\n"); 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*/) /*List::add*/;
-    ((parser_prod___PNode___parent__eq_t)CALL( variable5 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable5 /*n*/,  self) /*PExpr::parent=*/;
-    continue_646: while(0);
-    ((array___ArrayIterator___next_t)CALL(variable4,COLOR_abstract_collection___Iterator___next))(variable4) /*ArrayIterator::next*/;
+void parser_prod___ANewExpr___n_id__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 7768, LOCATE_parser_prod___ANewExpr___n_id__eq};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  ATTR_parser_nodes___ANewExpr____n_id(variable[0]) /*ANewExpr::_n_id*/ =  variable[1] /*n*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[0]) /*PNode::parent=*/;
   }
-  break_646: while(0);
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ANewExpr].i] = 1;
+  return_label674: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___ANewExpr___replace_child(val_t  self, val_t  param0, val_t  param1) {
-  struct trace_t trace = {NULL, "parser_prod::ANewExpr::replace_child (src/parser//parser_prod.nit:7454,5--7496:22)"};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  val_t variable3;
-    val_t variable4;
-  trace.prev = tracehead; tracehead = &trace;
-  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*/) /*PNode::==*/)))))));
-  if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert failed: src/parser//parser_prod.nit:7456,9--32\n"); 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*/) /*TKwnew::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*PNode::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_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 failed: src/parser//parser_prod.nit:7460,3--29\n"); 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_label647;
-  }
-  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*/) /*PType::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*PNode::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_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 failed: src/parser//parser_prod.nit:7470,3--28\n"); 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_label647;
-  }
-  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*/) /*TId::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*PNode::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_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 failed: src/parser//parser_prod.nit:7480,3--26\n"); 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_label647;
-  }
-  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[Int]*/
-  variable2 = variable3;
-  variable2 = ((range___Range___iterator_t)CALL(variable2,COLOR_abstract_collection___Collection___iterator))(variable2) /*Range::iterator*/;
+  struct trace_t trace = {NULL, NULL, 7806, LOCATE_parser_prod___ANewExpr___replace_child};
+  val_t variable[8];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Local variable */
+  variable[2] =  param1;
+  /* Register variable[3]: Method return value and escape marker */
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ANewExpr___replace_child, LOCATE_parser_prod, 7808); nit_exit(1);}
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___ANewExpr____n_kwnew(variable[0]) /*ANewExpr::_n_kwnew*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*PNode::parent=*/;
+      /* Register variable[4]: Result */
+      variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_TKwnew, ID_TKwnew)) /*cast TKwnew*/;
+      if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ANewExpr___replace_child, LOCATE_parser_prod, 7812); nit_exit(1);}
+      ATTR_parser_nodes___ANewExpr____n_kwnew(variable[0]) /*ANewExpr::_n_kwnew*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      ATTR_parser_nodes___ANewExpr____n_kwnew(variable[0]) /*ANewExpr::_n_kwnew*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label675;
+  }
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___ANewExpr____n_type(variable[0]) /*ANewExpr::_n_type*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*PNode::parent=*/;
+      /* Register variable[4]: Result */
+      variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PType, ID_PType)) /*cast PType*/;
+      if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ANewExpr___replace_child, LOCATE_parser_prod, 7822); nit_exit(1);}
+      ATTR_parser_nodes___ANewExpr____n_type(variable[0]) /*ANewExpr::_n_type*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      ATTR_parser_nodes___ANewExpr____n_type(variable[0]) /*ANewExpr::_n_type*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label675;
+  }
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___ANewExpr____n_id(variable[0]) /*ANewExpr::_n_id*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*PNode::parent=*/;
+      /* Register variable[4]: Result */
+      variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_TId, ID_TId)) /*cast TId*/;
+      if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ANewExpr___replace_child, LOCATE_parser_prod, 7832); nit_exit(1);}
+      ATTR_parser_nodes___ANewExpr____n_id(variable[0]) /*ANewExpr::_n_id*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      ATTR_parser_nodes___ANewExpr____n_id(variable[0]) /*ANewExpr::_n_id*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label675;
+  }
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___ANewExpr____n_args(variable[0]) /*ANewExpr::_n_args*/;
+  /* Register variable[4]: Result */
+  variable[4] = CALL_abstract_collection___Collection___length(variable[4])(variable[4]) /*List::length*/;
+  /* Register variable[4]: Result */
+  variable[4] = NEW_Range_range___Range___without_last( TAG_Int(0), variable[4]) /*new Range[Int]*/;
+  /* Register variable[4]: For iterator */
+  variable[4] = CALL_abstract_collection___Collection___iterator(variable[4])(variable[4]) /*Range::iterator*/;
   while (true) { /*for*/
-    variable3 = ((abstract_collection___Iterator___is_ok_t)CALL(variable2,COLOR_abstract_collection___Iterator___is_ok))(variable2) /*Iterator::is_ok*/;
-    if (!UNTAG_Bool(variable3)) break; /*for*/
-    variable3 = ((abstract_collection___Iterator___item_t)CALL(variable2,COLOR_abstract_collection___Iterator___item))(variable2) /*Iterator::item*/;
-    variable4 = ATTR_parser_nodes___ANewExpr____n_args( self) /*ANewExpr::_n_args*/;
-    variable4 = ((list___List_____bra_t)CALL(variable4,COLOR_abstract_collection___Map_____bra))(variable4,  variable3 /*i*/) /*List::[]*/;
-    variable4 = TAG_Bool((variable4 ==  variable0 /*old_child*/) || ((variable4 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable4,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable4, variable0 /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable4,COLOR_kernel___Object_____eqeq))(variable4,  variable0 /*old_child*/) /*PExpr::==*/)))));
-    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*/) /*PNode::==*/)))))));
-      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 failed: src/parser//parser_prod.nit:7490,7--32\n"); 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) /*PExpr::parent=*/;
+    /* Register variable[5]: For 'is_ok' result */
+    variable[5] = CALL_abstract_collection___Iterator___is_ok(variable[4])(variable[4]) /*Iterator::is_ok*/;
+    if (!UNTAG_Bool(variable[5])) break; /*for*/
+    variable[5] = CALL_abstract_collection___Iterator___item(variable[4])(variable[4]) /*Iterator::item*/ /* Ensure var: For item*/;
+    /* Register variable[6]: Local variable */
+    variable[6] = variable[5];
+    /* Register variable[7]: Result */
+    variable[7] = ATTR_parser_nodes___ANewExpr____n_args(variable[0]) /*ANewExpr::_n_args*/;
+    /* Register variable[7]: Result */
+    variable[7] = CALL_abstract_collection___MapRead_____bra(variable[7])(variable[7],  variable[6] /*i*/) /*List::[]*/;
+    /* Register variable[7]: Result */
+    variable[7] = TAG_Bool((variable[7] ==  variable[1] /*old_child*/) || ((variable[7] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[7])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[7], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[7])(variable[7],  variable[1] /*old_child*/) /*Object::==*/)))));
+    if (UNTAG_Bool(variable[7])) { /*if*/
+      /* Register variable[7]: Result */
+      variable[7] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+      if (UNTAG_Bool(variable[7])) { /*if*/
+        /* Register variable[7]: Result */
+        variable[7] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
+        if (!UNTAG_Bool(variable[7])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ANewExpr___replace_child, LOCATE_parser_prod, 7842); nit_exit(1);}
+        /* Register variable[7]: Result */
+        variable[7] = ATTR_parser_nodes___ANewExpr____n_args(variable[0]) /*ANewExpr::_n_args*/;
+        CALL_abstract_collection___Map_____braeq(variable[7])(variable[7],  variable[6] /*i*/,  variable[2] /*new_child*/) /*List::[]=*/;
+        CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*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*/;
+        /* Register variable[7]: Result */
+        variable[7] = ATTR_parser_nodes___ANewExpr____n_args(variable[0]) /*ANewExpr::_n_args*/;
+        CALL_abstract_collection___Map___remove_at(variable[7])(variable[7],  variable[6] /*i*/) /*List::remove_at*/;
       }
-      goto return_label647;
+      goto return_label675;
     }
-    continue_648: while(0);
-    ((abstract_collection___Iterator___next_t)CALL(variable2,COLOR_abstract_collection___Iterator___next))(variable2) /*Iterator::next*/;
+    continue_676: while(0);
+    CALL_abstract_collection___Iterator___next(variable[4])(variable[4]) /*Iterator::next*/;
   }
-  break_648: while(0);
-  return_label647: while(false);
+  break_676: while(0);
+  return_label675: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___ANewExpr___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::ANewExpr::visit_all (src/parser//parser_prod.nit:7501,5--7513:25)"};
-  val_t variable0;
-  val_t variable1;
-    val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  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*/) /*TKwnew::==*/)))))));
-  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*/) /*PType::==*/)))))));
-  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*/) /*TId::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___ANewExpr____n_id( self) /*ANewExpr::_n_id*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
-  variable1 = ATTR_parser_nodes___ANewExpr____n_args( self) /*ANewExpr::_n_args*/;
-  variable1 = ((list___List___iterator_t)CALL(variable1,COLOR_abstract_collection___Collection___iterator))(variable1) /*List::iterator*/;
+  struct trace_t trace = {NULL, NULL, 7853, LOCATE_parser_prod___ANewExpr___visit_all};
+  val_t variable[6];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___ANewExpr____n_kwnew(variable[0]) /*ANewExpr::_n_kwnew*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___ANewExpr____n_kwnew(variable[0]) /*ANewExpr::_n_kwnew*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___ANewExpr____n_type(variable[0]) /*ANewExpr::_n_type*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___ANewExpr____n_type(variable[0]) /*ANewExpr::_n_type*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___ANewExpr____n_id(variable[0]) /*ANewExpr::_n_id*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___ANewExpr____n_id(variable[0]) /*ANewExpr::_n_id*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___ANewExpr____n_args(variable[0]) /*ANewExpr::_n_args*/;
+  /* Register variable[3]: For iterator */
+  variable[3] = CALL_abstract_collection___Collection___iterator(variable[3])(variable[3]) /*List::iterator*/;
   while (true) { /*for*/
-    variable2 = ((list___ListIterator___is_ok_t)CALL(variable1,COLOR_abstract_collection___Iterator___is_ok))(variable1) /*ListIterator::is_ok*/;
-    if (!UNTAG_Bool(variable2)) break; /*for*/
-    variable2 = ((list___ListIterator___item_t)CALL(variable1,COLOR_abstract_collection___Iterator___item))(variable1) /*ListIterator::item*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/,  variable2 /*n*/) /*Visitor::visit*/;
-    continue_650: while(0);
-    ((list___ListIterator___next_t)CALL(variable1,COLOR_abstract_collection___Iterator___next))(variable1) /*ListIterator::next*/;
+    /* Register variable[4]: For 'is_ok' result */
+    variable[4] = CALL_abstract_collection___Iterator___is_ok(variable[3])(variable[3]) /*ListIterator::is_ok*/;
+    if (!UNTAG_Bool(variable[4])) break; /*for*/
+    variable[4] = CALL_abstract_collection___Iterator___item(variable[3])(variable[3]) /*ListIterator::item*/ /* Ensure var: For item*/;
+    /* Register variable[5]: Local variable */
+    variable[5] = variable[4];
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/,  variable[5] /*n*/) /*Visitor::visit*/;
+    continue_678: while(0);
+    CALL_abstract_collection___Iterator___next(variable[3])(variable[3]) /*ListIterator::next*/;
   }
-  break_650: while(0);
+  break_678: while(0);
+  return_label677: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___ANewExpr___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::ANewExpr::visit_all_reverse (src/parser//parser_prod.nit:7517,5--7532:11)"};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  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*/) /*TKwnew::==*/)))))));
-  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*/) /*PType::==*/)))))));
-  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*/) /*TId::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___ANewExpr____n_id( self) /*ANewExpr::_n_id*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
-  variable2 = ATTR_parser_nodes___ANewExpr____n_args( self) /*ANewExpr::_n_args*/;
-  variable2 = ((list___List___length_t)CALL(variable2,COLOR_abstract_collection___Collection___length))(variable2) /*List::length*/;
-  variable1 = variable2;
+  struct trace_t trace = {NULL, NULL, 7869, LOCATE_parser_prod___ANewExpr___visit_all_reverse};
+  val_t variable[5];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___ANewExpr____n_kwnew(variable[0]) /*ANewExpr::_n_kwnew*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___ANewExpr____n_kwnew(variable[0]) /*ANewExpr::_n_kwnew*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___ANewExpr____n_type(variable[0]) /*ANewExpr::_n_type*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___ANewExpr____n_type(variable[0]) /*ANewExpr::_n_type*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___ANewExpr____n_id(variable[0]) /*ANewExpr::_n_id*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___ANewExpr____n_id(variable[0]) /*ANewExpr::_n_id*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Local variable */
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___ANewExpr____n_args(variable[0]) /*ANewExpr::_n_args*/;
+  /* Register variable[4]: Result */
+  variable[4] = CALL_abstract_collection___Collection___length(variable[4])(variable[4]) /*List::length*/;
+  variable[3] = variable[4];
   while (true) { /*while*/
-    variable2 = TAG_Bool(UNTAG_Int( variable1 /*i*/)>=UNTAG_Int( TAG_Int(0)));
-    if (!UNTAG_Bool(variable2)) break; /* while*/
-    variable2 = ATTR_parser_nodes___ANewExpr____n_args( self) /*ANewExpr::_n_args*/;
-    variable2 = ((list___List_____bra_t)CALL(variable2,COLOR_abstract_collection___Map_____bra))(variable2,  variable1 /*i*/) /*List::[]*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable2) /*Visitor::visit*/;
-    variable2 = TAG_Int(UNTAG_Int( variable1 /*i*/)-UNTAG_Int( TAG_Int(1)));
-    variable1 = variable2 /*i=*/;
-    continue_652: while(0);
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(UNTAG_Int( variable[3] /*i*/)>=UNTAG_Int( TAG_Int(0)));
+    if (!UNTAG_Bool(variable[4])) break; /* while*/
+    /* Register variable[4]: Result */
+    variable[4] = ATTR_parser_nodes___ANewExpr____n_args(variable[0]) /*ANewExpr::_n_args*/;
+    /* Register variable[4]: Result */
+    variable[4] = CALL_abstract_collection___MapRead_____bra(variable[4])(variable[4],  variable[3] /*i*/) /*List::[]*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[4]) /*Visitor::visit*/;
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Int(UNTAG_Int( variable[3] /*i*/)-UNTAG_Int( TAG_Int(1)));
+    variable[3] = variable[4] /*i=*/;
+    continue_680: while(0);
   }
-  break_652: while(0);
+  break_680: while(0);
+  return_label679: while(false);
+  tracehead = trace.prev;
+  return;
+}
+void parser_prod___ANewExpr___empty_init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 7776, LOCATE_parser_prod___ANewExpr___empty_init};
+  val_t variable[2];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ANewExpr].i]) return;
+  /* Register variable[1]: Method return value and escape marker */
+  return_label681: while(false);
+  init_table[VAL2OBJ(variable[0])->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, 7778, LOCATE_parser_prod___ANewExpr___init_anewexpr};
+  val_t variable[10];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Local variable */
+  variable[2] =  param1;
+  /* Register variable[3]: Local variable */
+  variable[3] =  param2;
+  /* Register variable[4]: Local variable */
+  variable[4] =  param3;
+  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ANewExpr].i]) return;
+  /* Register variable[5]: Method return value and escape marker */
+  CALL_parser_prod___ANewExpr___empty_init(variable[0])(variable[0], init_table /*YYY*/) /*ANewExpr::empty_init*/;
+  ATTR_parser_nodes___ANewExpr____n_kwnew(variable[0]) /*ANewExpr::_n_kwnew*/ =  variable[1] /*n_kwnew*/;
+  /* Register variable[6]: Result */
+  variable[6] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_kwnew*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_kwnew*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n_kwnew*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_kwnew*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n_kwnew*/)( variable[1] /*n_kwnew*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[6])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n_kwnew*/)( variable[1] /*n_kwnew*/, variable[0]) /*PNode::parent=*/;
+  }
+  ATTR_parser_nodes___ANewExpr____n_type(variable[0]) /*ANewExpr::_n_type*/ =  variable[2] /*n_type*/;
+  /* Register variable[6]: Result */
+  variable[6] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*n_type*/ ==  NIT_NULL /*null*/) || (( variable[2] /*n_type*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*n_type*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*n_type*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*n_type*/)( variable[2] /*n_type*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[6])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[2] /*n_type*/)( variable[2] /*n_type*/, variable[0]) /*PNode::parent=*/;
+  }
+  ATTR_parser_nodes___ANewExpr____n_id(variable[0]) /*ANewExpr::_n_id*/ =  variable[3] /*n_id*/;
+  /* Register variable[6]: Result */
+  variable[6] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[3] /*n_id*/ ==  NIT_NULL /*null*/) || (( variable[3] /*n_id*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[3] /*n_id*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[3] /*n_id*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[3] /*n_id*/)( variable[3] /*n_id*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[6])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[3] /*n_id*/)( variable[3] /*n_id*/, variable[0]) /*PNode::parent=*/;
+  }
+  /* Register variable[6]: Result */
+  variable[6] = NEW_List_list___List___init() /*new List[PExpr]*/;
+  ATTR_parser_nodes___ANewExpr____n_args(variable[0]) /*ANewExpr::_n_args*/ = variable[6];
+  /* Register variable[6]: For iterator */
+  variable[6] = CALL_abstract_collection___Collection___iterator( variable[4] /*n_args*/)( variable[4] /*n_args*/) /*Collection::iterator*/;
+  while (true) { /*for*/
+    /* Register variable[7]: For 'is_ok' result */
+    variable[7] = CALL_abstract_collection___Iterator___is_ok(variable[6])(variable[6]) /*Iterator::is_ok*/;
+    if (!UNTAG_Bool(variable[7])) break; /*for*/
+    variable[7] = CALL_abstract_collection___Iterator___item(variable[6])(variable[6]) /*Iterator::item*/ /* Ensure var: For item*/;
+    /* Register variable[8]: Local variable */
+    variable[8] = variable[7];
+    /* Register variable[9]: Result */
+    variable[9] = TAG_Bool(( variable[8] /*n*/==NIT_NULL) || VAL_ISA( variable[8] /*n*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
+    if (!UNTAG_Bool(variable[9])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ANewExpr___init_anewexpr, LOCATE_parser_prod, 7800); nit_exit(1);}
+    /* Register variable[9]: Result */
+    variable[9] = ATTR_parser_nodes___ANewExpr____n_args(variable[0]) /*ANewExpr::_n_args*/;
+    CALL_abstract_collection___SimpleCollection___add(variable[9])(variable[9],  variable[8] /*n*/) /*IndexedCollection::add*/;
+    CALL_parser_prod___PNode___parent__eq( variable[8] /*n*/)( variable[8] /*n*/, variable[0]) /*PNode::parent=*/;
+    continue_683: while(0);
+    CALL_abstract_collection___Iterator___next(variable[6])(variable[6]) /*Iterator::next*/;
+  }
+  break_683: while(0);
+  return_label682: while(false);
+  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ANewExpr].i] = 1;
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AAttrExpr___n_expr__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AAttrExpr::n_expr= (src/parser//parser_prod.nit:7538,5--7542:20)"};
-  val_t variable0;
-  val_t variable1;
+  struct trace_t trace = {NULL, NULL, 7890, LOCATE_parser_prod___AAttrExpr___n_expr__eq};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  variable0 =  param0;
-  ATTR_parser_nodes___AAttrFormExpr____n_expr( self) /*AAttrExpr::_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*/) /*PExpr::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PExpr::parent=*/;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  ATTR_parser_nodes___AAttrFormExpr____n_expr(variable[0]) /*AAttrFormExpr::_n_expr*/ =  variable[1] /*n*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[0]) /*PNode::parent=*/;
   }
+  return_label684: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AAttrExpr___n_id__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AAttrExpr::n_id= (src/parser//parser_prod.nit:7545,5--7549:20)"};
-  val_t variable0;
-  val_t variable1;
+  struct trace_t trace = {NULL, NULL, 7897, LOCATE_parser_prod___AAttrExpr___n_id__eq};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  variable0 =  param0;
-  ATTR_parser_nodes___AAttrFormExpr____n_id( self) /*AAttrExpr::_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*/) /*TAttrid::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*TAttrid::parent=*/;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  ATTR_parser_nodes___AAttrFormExpr____n_id(variable[0]) /*AAttrFormExpr::_n_id*/ =  variable[1] /*n*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[0]) /*PNode::parent=*/;
   }
+  return_label685: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AAttrExpr___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, "parser_prod::AAttrExpr::empty_init (src/parser//parser_prod.nit:7553,5--27)"};
-  trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AAttrExpr].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AAttrExpr].i] = 1;
+void parser_prod___AAttrExpr___replace_child(val_t  self, val_t  param0, val_t  param1) {
+  struct trace_t trace = {NULL, NULL, 7923, LOCATE_parser_prod___AAttrExpr___replace_child};
+  val_t variable[5];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Local variable */
+  variable[2] =  param1;
+  /* Register variable[3]: Method return value and escape marker */
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AAttrExpr___replace_child, LOCATE_parser_prod, 7925); nit_exit(1);}
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___AAttrFormExpr____n_expr(variable[0]) /*AAttrFormExpr::_n_expr*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*PNode::parent=*/;
+      /* Register variable[4]: Result */
+      variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
+      if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AAttrExpr___replace_child, LOCATE_parser_prod, 7929); nit_exit(1);}
+      ATTR_parser_nodes___AAttrFormExpr____n_expr(variable[0]) /*AAttrFormExpr::_n_expr*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      ATTR_parser_nodes___AAttrFormExpr____n_expr(variable[0]) /*AAttrFormExpr::_n_expr*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label686;
+  }
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___AAttrFormExpr____n_id(variable[0]) /*AAttrFormExpr::_n_id*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*PNode::parent=*/;
+      /* Register variable[4]: Result */
+      variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_TAttrid, ID_TAttrid)) /*cast TAttrid*/;
+      if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AAttrExpr___replace_child, LOCATE_parser_prod, 7939); nit_exit(1);}
+      ATTR_parser_nodes___AAttrFormExpr____n_id(variable[0]) /*AAttrFormExpr::_n_id*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      ATTR_parser_nodes___AAttrFormExpr____n_id(variable[0]) /*AAttrFormExpr::_n_id*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label686;
+  }
+  return_label686: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AAttrExpr___init_aattrexpr(val_t  self, val_t  param0, val_t  param1, int* init_table) {
-  struct trace_t trace = {NULL, "parser_prod::AAttrExpr::init_aattrexpr (src/parser//parser_prod.nit:7555,5--7566:20)"};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  variable0 =  param0;
-  variable1 =  param1;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AAttrExpr].i]) return;
-  ATTR_parser_nodes___AAttrFormExpr____n_expr( self) /*AAttrExpr::_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*/) /*PExpr::==*/)))))));
-  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) /*PExpr::parent=*/;
-  }
-  ATTR_parser_nodes___AAttrFormExpr____n_id( self) /*AAttrExpr::_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*/) /*TAttrid::==*/)))))));
-  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) /*TAttrid::parent=*/;
-  }
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AAttrExpr].i] = 1;
+void parser_prod___AAttrExpr___visit_all(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 7948, LOCATE_parser_prod___AAttrExpr___visit_all};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AAttrFormExpr____n_expr(variable[0]) /*AAttrFormExpr::_n_expr*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AAttrFormExpr____n_expr(variable[0]) /*AAttrFormExpr::_n_expr*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AAttrFormExpr____n_id(variable[0]) /*AAttrFormExpr::_n_id*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AAttrFormExpr____n_id(variable[0]) /*AAttrFormExpr::_n_id*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  return_label687: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AAttrExpr___replace_child(val_t  self, val_t  param0, val_t  param1) {
-  struct trace_t trace = {NULL, "parser_prod::AAttrExpr::replace_child (src/parser//parser_prod.nit:7570,5--7591:18)"};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  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*/) /*PNode::==*/)))))));
-  if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert failed: src/parser//parser_prod.nit:7572,9--32\n"); nit_exit(1);}
-  variable2 = ATTR_parser_nodes___AAttrFormExpr____n_expr( self) /*AAttrExpr::_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*/) /*PExpr::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*PNode::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_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 failed: src/parser//parser_prod.nit:7576,3--28\n"); nit_exit(1);}
-      ATTR_parser_nodes___AAttrFormExpr____n_expr( self) /*AAttrExpr::_n_expr*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___AAttrFormExpr____n_expr( self) /*AAttrExpr::_n_expr*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label657;
-  }
-  variable2 = ATTR_parser_nodes___AAttrFormExpr____n_id( self) /*AAttrExpr::_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*/) /*TAttrid::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*PNode::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_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 failed: src/parser//parser_prod.nit:7586,3--30\n"); nit_exit(1);}
-      ATTR_parser_nodes___AAttrFormExpr____n_id( self) /*AAttrExpr::_n_id*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___AAttrFormExpr____n_id( self) /*AAttrExpr::_n_id*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label657;
-  }
-  return_label657: while(false);
+void parser_prod___AAttrExpr___visit_all_reverse(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 7958, LOCATE_parser_prod___AAttrExpr___visit_all_reverse};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AAttrFormExpr____n_expr(variable[0]) /*AAttrFormExpr::_n_expr*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AAttrFormExpr____n_expr(variable[0]) /*AAttrFormExpr::_n_expr*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AAttrFormExpr____n_id(variable[0]) /*AAttrFormExpr::_n_id*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AAttrFormExpr____n_id(variable[0]) /*AAttrFormExpr::_n_id*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  return_label688: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AAttrExpr___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AAttrExpr::visit_all (src/parser//parser_prod.nit:7595,5--7601:25)"};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___AAttrExpr___empty_init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 7905, LOCATE_parser_prod___AAttrExpr___empty_init};
+  val_t variable[2];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___AAttrFormExpr____n_expr( self) /*AAttrExpr::_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*/) /*PExpr::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AAttrFormExpr____n_expr( self) /*AAttrExpr::_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) /*AAttrExpr::_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*/) /*TAttrid::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AAttrFormExpr____n_id( self) /*AAttrExpr::_n_id*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AAttrExpr].i]) return;
+  /* Register variable[1]: Method return value and escape marker */
+  return_label689: while(false);
+  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AAttrExpr].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AAttrExpr___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AAttrExpr::visit_all_reverse (src/parser//parser_prod.nit:7605,5--7611:25)"};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___AAttrFormExpr____n_expr( self) /*AAttrExpr::_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*/) /*PExpr::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AAttrFormExpr____n_expr( self) /*AAttrExpr::_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) /*AAttrExpr::_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*/) /*TAttrid::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AAttrFormExpr____n_id( self) /*AAttrExpr::_n_id*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
+void parser_prod___AAttrExpr___init_aattrexpr(val_t  self, val_t  param0, val_t  param1, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 7907, LOCATE_parser_prod___AAttrExpr___init_aattrexpr};
+  val_t variable[5];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Local variable */
+  variable[2] =  param1;
+  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AAttrExpr].i]) return;
+  /* Register variable[3]: Method return value and escape marker */
+  CALL_parser_prod___AAttrExpr___empty_init(variable[0])(variable[0], init_table /*YYY*/) /*AAttrExpr::empty_init*/;
+  ATTR_parser_nodes___AAttrFormExpr____n_expr(variable[0]) /*AAttrFormExpr::_n_expr*/ =  variable[1] /*n_expr*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_expr*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_expr*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n_expr*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_expr*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n_expr*/)( variable[1] /*n_expr*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n_expr*/)( variable[1] /*n_expr*/, variable[0]) /*PNode::parent=*/;
+  }
+  ATTR_parser_nodes___AAttrFormExpr____n_id(variable[0]) /*AAttrFormExpr::_n_id*/ =  variable[2] /*n_id*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*n_id*/ ==  NIT_NULL /*null*/) || (( variable[2] /*n_id*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*n_id*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*n_id*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*n_id*/)( variable[2] /*n_id*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[2] /*n_id*/)( variable[2] /*n_id*/, variable[0]) /*PNode::parent=*/;
+  }
+  return_label690: while(false);
+  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AAttrExpr].i] = 1;
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AAttrAssignExpr___n_expr__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AAttrAssignExpr::n_expr= (src/parser//parser_prod.nit:7616,5--7620:20)"};
-  val_t variable0;
-  val_t variable1;
+  struct trace_t trace = {NULL, NULL, 7969, LOCATE_parser_prod___AAttrAssignExpr___n_expr__eq};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  variable0 =  param0;
-  ATTR_parser_nodes___AAttrFormExpr____n_expr( self) /*AAttrAssignExpr::_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*/) /*PExpr::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PExpr::parent=*/;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  ATTR_parser_nodes___AAttrFormExpr____n_expr(variable[0]) /*AAttrFormExpr::_n_expr*/ =  variable[1] /*n*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[0]) /*PNode::parent=*/;
   }
+  return_label691: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AAttrAssignExpr___n_id__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AAttrAssignExpr::n_id= (src/parser//parser_prod.nit:7623,5--7627:20)"};
-  val_t variable0;
-  val_t variable1;
+  struct trace_t trace = {NULL, NULL, 7976, LOCATE_parser_prod___AAttrAssignExpr___n_id__eq};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  variable0 =  param0;
-  ATTR_parser_nodes___AAttrFormExpr____n_id( self) /*AAttrAssignExpr::_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*/) /*TAttrid::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*TAttrid::parent=*/;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  ATTR_parser_nodes___AAttrFormExpr____n_id(variable[0]) /*AAttrFormExpr::_n_id*/ =  variable[1] /*n*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[0]) /*PNode::parent=*/;
   }
+  return_label692: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AAttrAssignExpr___n_assign__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AAttrAssignExpr::n_assign= (src/parser//parser_prod.nit:7630,5--7634:20)"};
-  val_t variable0;
-  val_t variable1;
+  struct trace_t trace = {NULL, NULL, 7983, LOCATE_parser_prod___AAttrAssignExpr___n_assign__eq};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  variable0 =  param0;
-  ATTR_parser_nodes___AAssignFormExpr____n_assign( self) /*AAttrAssignExpr::_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*/) /*TAssign::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*TAssign::parent=*/;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  ATTR_parser_nodes___AAssignFormExpr____n_assign(variable[0]) /*AAssignFormExpr::_n_assign*/ =  variable[1] /*n*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[0]) /*PNode::parent=*/;
   }
+  return_label693: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AAttrAssignExpr___n_value__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AAttrAssignExpr::n_value= (src/parser//parser_prod.nit:7637,5--7641:20)"};
-  val_t variable0;
-  val_t variable1;
+  struct trace_t trace = {NULL, NULL, 7990, LOCATE_parser_prod___AAttrAssignExpr___n_value__eq};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  variable0 =  param0;
-  ATTR_parser_nodes___AAssignFormExpr____n_value( self) /*AAttrAssignExpr::_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*/) /*PExpr::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PExpr::parent=*/;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  ATTR_parser_nodes___AAssignFormExpr____n_value(variable[0]) /*AAssignFormExpr::_n_value*/ =  variable[1] /*n*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[0]) /*PNode::parent=*/;
   }
+  return_label694: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AAttrAssignExpr___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, "parser_prod::AAttrAssignExpr::empty_init (src/parser//parser_prod.nit:7645,5--27)"};
-  trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AAttrAssignExpr].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AAttrAssignExpr].i] = 1;
+void parser_prod___AAttrAssignExpr___replace_child(val_t  self, val_t  param0, val_t  param1) {
+  struct trace_t trace = {NULL, NULL, 8026, LOCATE_parser_prod___AAttrAssignExpr___replace_child};
+  val_t variable[5];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Local variable */
+  variable[2] =  param1;
+  /* Register variable[3]: Method return value and escape marker */
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AAttrAssignExpr___replace_child, LOCATE_parser_prod, 8028); nit_exit(1);}
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___AAttrFormExpr____n_expr(variable[0]) /*AAttrFormExpr::_n_expr*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*PNode::parent=*/;
+      /* Register variable[4]: Result */
+      variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
+      if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AAttrAssignExpr___replace_child, LOCATE_parser_prod, 8032); nit_exit(1);}
+      ATTR_parser_nodes___AAttrFormExpr____n_expr(variable[0]) /*AAttrFormExpr::_n_expr*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      ATTR_parser_nodes___AAttrFormExpr____n_expr(variable[0]) /*AAttrFormExpr::_n_expr*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label695;
+  }
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___AAttrFormExpr____n_id(variable[0]) /*AAttrFormExpr::_n_id*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*PNode::parent=*/;
+      /* Register variable[4]: Result */
+      variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_TAttrid, ID_TAttrid)) /*cast TAttrid*/;
+      if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AAttrAssignExpr___replace_child, LOCATE_parser_prod, 8042); nit_exit(1);}
+      ATTR_parser_nodes___AAttrFormExpr____n_id(variable[0]) /*AAttrFormExpr::_n_id*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      ATTR_parser_nodes___AAttrFormExpr____n_id(variable[0]) /*AAttrFormExpr::_n_id*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label695;
+  }
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___AAssignFormExpr____n_assign(variable[0]) /*AAssignFormExpr::_n_assign*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*PNode::parent=*/;
+      /* Register variable[4]: Result */
+      variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_TAssign, ID_TAssign)) /*cast TAssign*/;
+      if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AAttrAssignExpr___replace_child, LOCATE_parser_prod, 8052); nit_exit(1);}
+      ATTR_parser_nodes___AAssignFormExpr____n_assign(variable[0]) /*AAssignFormExpr::_n_assign*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      ATTR_parser_nodes___AAssignFormExpr____n_assign(variable[0]) /*AAssignFormExpr::_n_assign*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label695;
+  }
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___AAssignFormExpr____n_value(variable[0]) /*AAssignFormExpr::_n_value*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*PNode::parent=*/;
+      /* Register variable[4]: Result */
+      variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
+      if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AAttrAssignExpr___replace_child, LOCATE_parser_prod, 8062); nit_exit(1);}
+      ATTR_parser_nodes___AAssignFormExpr____n_value(variable[0]) /*AAssignFormExpr::_n_value*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      ATTR_parser_nodes___AAssignFormExpr____n_value(variable[0]) /*AAssignFormExpr::_n_value*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label695;
+  }
+  return_label695: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AAttrAssignExpr___init_aattrassignexpr(val_t  self, val_t  param0, val_t  param1, val_t  param2, val_t  param3, int* init_table) {
-  struct trace_t trace = {NULL, "parser_prod::AAttrAssignExpr::init_aattrassignexpr (src/parser//parser_prod.nit:7647,5--7668:23)"};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  val_t variable3;
-  val_t variable4;
-  trace.prev = tracehead; tracehead = &trace;
-  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) /*AAttrAssignExpr::_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*/) /*PExpr::==*/)))))));
-  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) /*PExpr::parent=*/;
-  }
-  ATTR_parser_nodes___AAttrFormExpr____n_id( self) /*AAttrAssignExpr::_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*/) /*TAttrid::==*/)))))));
-  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) /*TAttrid::parent=*/;
-  }
-  ATTR_parser_nodes___AAssignFormExpr____n_assign( self) /*AAttrAssignExpr::_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*/) /*TAssign::==*/)))))));
-  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) /*TAssign::parent=*/;
-  }
-  ATTR_parser_nodes___AAssignFormExpr____n_value( self) /*AAttrAssignExpr::_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*/) /*PExpr::==*/)))))));
-  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) /*PExpr::parent=*/;
-  }
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AAttrAssignExpr].i] = 1;
+void parser_prod___AAttrAssignExpr___visit_all(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 8071, LOCATE_parser_prod___AAttrAssignExpr___visit_all};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AAttrFormExpr____n_expr(variable[0]) /*AAttrFormExpr::_n_expr*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AAttrFormExpr____n_expr(variable[0]) /*AAttrFormExpr::_n_expr*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AAttrFormExpr____n_id(variable[0]) /*AAttrFormExpr::_n_id*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AAttrFormExpr____n_id(variable[0]) /*AAttrFormExpr::_n_id*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AAssignFormExpr____n_assign(variable[0]) /*AAssignFormExpr::_n_assign*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AAssignFormExpr____n_assign(variable[0]) /*AAssignFormExpr::_n_assign*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AAssignFormExpr____n_value(variable[0]) /*AAssignFormExpr::_n_value*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AAssignFormExpr____n_value(variable[0]) /*AAssignFormExpr::_n_value*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  return_label696: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AAttrAssignExpr___replace_child(val_t  self, val_t  param0, val_t  param1) {
-  struct trace_t trace = {NULL, "parser_prod::AAttrAssignExpr::replace_child (src/parser//parser_prod.nit:7672,5--7713:18)"};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  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*/) /*PNode::==*/)))))));
-  if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert failed: src/parser//parser_prod.nit:7674,9--32\n"); nit_exit(1);}
-  variable2 = ATTR_parser_nodes___AAttrFormExpr____n_expr( self) /*AAttrAssignExpr::_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*/) /*PExpr::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*PNode::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_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 failed: src/parser//parser_prod.nit:7678,3--28\n"); nit_exit(1);}
-      ATTR_parser_nodes___AAttrFormExpr____n_expr( self) /*AAttrAssignExpr::_n_expr*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___AAttrFormExpr____n_expr( self) /*AAttrAssignExpr::_n_expr*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label666;
-  }
-  variable2 = ATTR_parser_nodes___AAttrFormExpr____n_id( self) /*AAttrAssignExpr::_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*/) /*TAttrid::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*PNode::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_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 failed: src/parser//parser_prod.nit:7688,3--30\n"); nit_exit(1);}
-      ATTR_parser_nodes___AAttrFormExpr____n_id( self) /*AAttrAssignExpr::_n_id*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___AAttrFormExpr____n_id( self) /*AAttrAssignExpr::_n_id*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label666;
-  }
-  variable2 = ATTR_parser_nodes___AAssignFormExpr____n_assign( self) /*AAttrAssignExpr::_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*/) /*TAssign::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*PNode::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_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 failed: src/parser//parser_prod.nit:7698,3--30\n"); nit_exit(1);}
-      ATTR_parser_nodes___AAssignFormExpr____n_assign( self) /*AAttrAssignExpr::_n_assign*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___AAssignFormExpr____n_assign( self) /*AAttrAssignExpr::_n_assign*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label666;
-  }
-  variable2 = ATTR_parser_nodes___AAssignFormExpr____n_value( self) /*AAttrAssignExpr::_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*/) /*PExpr::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*PNode::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_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 failed: src/parser//parser_prod.nit:7708,3--28\n"); nit_exit(1);}
-      ATTR_parser_nodes___AAssignFormExpr____n_value( self) /*AAttrAssignExpr::_n_value*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___AAssignFormExpr____n_value( self) /*AAttrAssignExpr::_n_value*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label666;
-  }
-  return_label666: while(false);
+void parser_prod___AAttrAssignExpr___visit_all_reverse(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 8087, LOCATE_parser_prod___AAttrAssignExpr___visit_all_reverse};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AAttrFormExpr____n_expr(variable[0]) /*AAttrFormExpr::_n_expr*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AAttrFormExpr____n_expr(variable[0]) /*AAttrFormExpr::_n_expr*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AAttrFormExpr____n_id(variable[0]) /*AAttrFormExpr::_n_id*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AAttrFormExpr____n_id(variable[0]) /*AAttrFormExpr::_n_id*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AAssignFormExpr____n_assign(variable[0]) /*AAssignFormExpr::_n_assign*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AAssignFormExpr____n_assign(variable[0]) /*AAssignFormExpr::_n_assign*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AAssignFormExpr____n_value(variable[0]) /*AAssignFormExpr::_n_value*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AAssignFormExpr____n_value(variable[0]) /*AAssignFormExpr::_n_value*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  return_label697: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AAttrAssignExpr___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AAttrAssignExpr::visit_all (src/parser//parser_prod.nit:7717,5--7729:28)"};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___AAttrAssignExpr___empty_init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 7998, LOCATE_parser_prod___AAttrAssignExpr___empty_init};
+  val_t variable[2];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___AAttrFormExpr____n_expr( self) /*AAttrAssignExpr::_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*/) /*PExpr::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AAttrFormExpr____n_expr( self) /*AAttrAssignExpr::_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) /*AAttrAssignExpr::_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*/) /*TAttrid::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AAttrFormExpr____n_id( self) /*AAttrAssignExpr::_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) /*AAttrAssignExpr::_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*/) /*TAssign::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AAssignFormExpr____n_assign( self) /*AAttrAssignExpr::_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) /*AAttrAssignExpr::_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*/) /*PExpr::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AAssignFormExpr____n_value( self) /*AAttrAssignExpr::_n_value*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AAttrAssignExpr].i]) return;
+  /* Register variable[1]: Method return value and escape marker */
+  return_label698: while(false);
+  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AAttrAssignExpr].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AAttrAssignExpr___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AAttrAssignExpr::visit_all_reverse (src/parser//parser_prod.nit:7733,5--7745:28)"};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___AAttrFormExpr____n_expr( self) /*AAttrAssignExpr::_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*/) /*PExpr::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AAttrFormExpr____n_expr( self) /*AAttrAssignExpr::_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) /*AAttrAssignExpr::_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*/) /*TAttrid::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AAttrFormExpr____n_id( self) /*AAttrAssignExpr::_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) /*AAttrAssignExpr::_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*/) /*TAssign::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AAssignFormExpr____n_assign( self) /*AAttrAssignExpr::_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) /*AAttrAssignExpr::_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*/) /*PExpr::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AAssignFormExpr____n_value( self) /*AAttrAssignExpr::_n_value*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
+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, 8000, LOCATE_parser_prod___AAttrAssignExpr___init_aattrassignexpr};
+  val_t variable[7];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Local variable */
+  variable[2] =  param1;
+  /* Register variable[3]: Local variable */
+  variable[3] =  param2;
+  /* Register variable[4]: Local variable */
+  variable[4] =  param3;
+  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AAttrAssignExpr].i]) return;
+  /* Register variable[5]: Method return value and escape marker */
+  CALL_parser_prod___AAttrAssignExpr___empty_init(variable[0])(variable[0], init_table /*YYY*/) /*AAttrAssignExpr::empty_init*/;
+  ATTR_parser_nodes___AAttrFormExpr____n_expr(variable[0]) /*AAttrFormExpr::_n_expr*/ =  variable[1] /*n_expr*/;
+  /* Register variable[6]: Result */
+  variable[6] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_expr*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_expr*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n_expr*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_expr*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n_expr*/)( variable[1] /*n_expr*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[6])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n_expr*/)( variable[1] /*n_expr*/, variable[0]) /*PNode::parent=*/;
+  }
+  ATTR_parser_nodes___AAttrFormExpr____n_id(variable[0]) /*AAttrFormExpr::_n_id*/ =  variable[2] /*n_id*/;
+  /* Register variable[6]: Result */
+  variable[6] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*n_id*/ ==  NIT_NULL /*null*/) || (( variable[2] /*n_id*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*n_id*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*n_id*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*n_id*/)( variable[2] /*n_id*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[6])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[2] /*n_id*/)( variable[2] /*n_id*/, variable[0]) /*PNode::parent=*/;
+  }
+  ATTR_parser_nodes___AAssignFormExpr____n_assign(variable[0]) /*AAssignFormExpr::_n_assign*/ =  variable[3] /*n_assign*/;
+  /* Register variable[6]: Result */
+  variable[6] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[3] /*n_assign*/ ==  NIT_NULL /*null*/) || (( variable[3] /*n_assign*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[3] /*n_assign*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[3] /*n_assign*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[3] /*n_assign*/)( variable[3] /*n_assign*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[6])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[3] /*n_assign*/)( variable[3] /*n_assign*/, variable[0]) /*PNode::parent=*/;
+  }
+  ATTR_parser_nodes___AAssignFormExpr____n_value(variable[0]) /*AAssignFormExpr::_n_value*/ =  variable[4] /*n_value*/;
+  /* Register variable[6]: Result */
+  variable[6] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[4] /*n_value*/ ==  NIT_NULL /*null*/) || (( variable[4] /*n_value*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[4] /*n_value*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[4] /*n_value*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[4] /*n_value*/)( variable[4] /*n_value*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[6])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[4] /*n_value*/)( variable[4] /*n_value*/, variable[0]) /*PNode::parent=*/;
+  }
+  return_label699: while(false);
+  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AAttrAssignExpr].i] = 1;
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AAttrReassignExpr___n_expr__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AAttrReassignExpr::n_expr= (src/parser//parser_prod.nit:7750,5--7754:20)"};
-  val_t variable0;
-  val_t variable1;
+  struct trace_t trace = {NULL, NULL, 8104, LOCATE_parser_prod___AAttrReassignExpr___n_expr__eq};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  variable0 =  param0;
-  ATTR_parser_nodes___AAttrFormExpr____n_expr( self) /*AAttrReassignExpr::_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*/) /*PExpr::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PExpr::parent=*/;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  ATTR_parser_nodes___AAttrFormExpr____n_expr(variable[0]) /*AAttrFormExpr::_n_expr*/ =  variable[1] /*n*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[0]) /*PNode::parent=*/;
   }
+  return_label700: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AAttrReassignExpr___n_id__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AAttrReassignExpr::n_id= (src/parser//parser_prod.nit:7757,5--7761:20)"};
-  val_t variable0;
-  val_t variable1;
+  struct trace_t trace = {NULL, NULL, 8111, LOCATE_parser_prod___AAttrReassignExpr___n_id__eq};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  variable0 =  param0;
-  ATTR_parser_nodes___AAttrFormExpr____n_id( self) /*AAttrReassignExpr::_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*/) /*TAttrid::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*TAttrid::parent=*/;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  ATTR_parser_nodes___AAttrFormExpr____n_id(variable[0]) /*AAttrFormExpr::_n_id*/ =  variable[1] /*n*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[0]) /*PNode::parent=*/;
   }
+  return_label701: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AAttrReassignExpr___n_assign_op__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AAttrReassignExpr::n_assign_op= (src/parser//parser_prod.nit:7764,5--7768:20)"};
-  val_t variable0;
-  val_t variable1;
+  struct trace_t trace = {NULL, NULL, 8118, LOCATE_parser_prod___AAttrReassignExpr___n_assign_op__eq};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  variable0 =  param0;
-  ATTR_parser_nodes___AReassignFormExpr____n_assign_op( self) /*AAttrReassignExpr::_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*/) /*PAssignOp::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PAssignOp::parent=*/;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  ATTR_parser_nodes___AReassignFormExpr____n_assign_op(variable[0]) /*AReassignFormExpr::_n_assign_op*/ =  variable[1] /*n*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[0]) /*PNode::parent=*/;
   }
+  return_label702: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AAttrReassignExpr___n_value__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AAttrReassignExpr::n_value= (src/parser//parser_prod.nit:7771,5--7775:20)"};
-  val_t variable0;
-  val_t variable1;
+  struct trace_t trace = {NULL, NULL, 8125, LOCATE_parser_prod___AAttrReassignExpr___n_value__eq};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  variable0 =  param0;
-  ATTR_parser_nodes___AReassignFormExpr____n_value( self) /*AAttrReassignExpr::_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*/) /*PExpr::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PExpr::parent=*/;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  ATTR_parser_nodes___AReassignFormExpr____n_value(variable[0]) /*AReassignFormExpr::_n_value*/ =  variable[1] /*n*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[0]) /*PNode::parent=*/;
   }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AAttrReassignExpr___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, "parser_prod::AAttrReassignExpr::empty_init (src/parser//parser_prod.nit:7779,5--27)"};
-  trace.prev = tracehead; tracehead = &trace;
-  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, "parser_prod::AAttrReassignExpr::init_aattrreassignexpr (src/parser//parser_prod.nit:7781,5--7802:23)"};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  val_t variable3;
-  val_t variable4;
-  trace.prev = tracehead; tracehead = &trace;
-  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) /*AAttrReassignExpr::_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*/) /*PExpr::==*/)))))));
-  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) /*PExpr::parent=*/;
-  }
-  ATTR_parser_nodes___AAttrFormExpr____n_id( self) /*AAttrReassignExpr::_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*/) /*TAttrid::==*/)))))));
-  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) /*TAttrid::parent=*/;
-  }
-  ATTR_parser_nodes___AReassignFormExpr____n_assign_op( self) /*AAttrReassignExpr::_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*/) /*PAssignOp::==*/)))))));
-  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) /*PAssignOp::parent=*/;
-  }
-  ATTR_parser_nodes___AReassignFormExpr____n_value( self) /*AAttrReassignExpr::_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*/) /*PExpr::==*/)))))));
-  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) /*PExpr::parent=*/;
-  }
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AAttrReassignExpr].i] = 1;
+  return_label703: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AAttrReassignExpr___replace_child(val_t  self, val_t  param0, val_t  param1) {
-  struct trace_t trace = {NULL, "parser_prod::AAttrReassignExpr::replace_child (src/parser//parser_prod.nit:7806,5--7847:18)"};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  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*/) /*PNode::==*/)))))));
-  if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert failed: src/parser//parser_prod.nit:7808,9--32\n"); nit_exit(1);}
-  variable2 = ATTR_parser_nodes___AAttrFormExpr____n_expr( self) /*AAttrReassignExpr::_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*/) /*PExpr::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*PNode::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_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 failed: src/parser//parser_prod.nit:7812,3--28\n"); nit_exit(1);}
-      ATTR_parser_nodes___AAttrFormExpr____n_expr( self) /*AAttrReassignExpr::_n_expr*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___AAttrFormExpr____n_expr( self) /*AAttrReassignExpr::_n_expr*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label675;
-  }
-  variable2 = ATTR_parser_nodes___AAttrFormExpr____n_id( self) /*AAttrReassignExpr::_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*/) /*TAttrid::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*PNode::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_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 failed: src/parser//parser_prod.nit:7822,3--30\n"); nit_exit(1);}
-      ATTR_parser_nodes___AAttrFormExpr____n_id( self) /*AAttrReassignExpr::_n_id*/ =  variable1 /*new_child*/;
+  struct trace_t trace = {NULL, NULL, 8161, LOCATE_parser_prod___AAttrReassignExpr___replace_child};
+  val_t variable[5];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Local variable */
+  variable[2] =  param1;
+  /* Register variable[3]: Method return value and escape marker */
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AAttrReassignExpr___replace_child, LOCATE_parser_prod, 8163); nit_exit(1);}
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___AAttrFormExpr____n_expr(variable[0]) /*AAttrFormExpr::_n_expr*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*PNode::parent=*/;
+      /* Register variable[4]: Result */
+      variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
+      if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AAttrReassignExpr___replace_child, LOCATE_parser_prod, 8167); nit_exit(1);}
+      ATTR_parser_nodes___AAttrFormExpr____n_expr(variable[0]) /*AAttrFormExpr::_n_expr*/ =  variable[2] /*new_child*/;
     } else { /*if*/
-      ATTR_parser_nodes___AAttrFormExpr____n_id( self) /*AAttrReassignExpr::_n_id*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label675;
-  }
-  variable2 = ATTR_parser_nodes___AReassignFormExpr____n_assign_op( self) /*AAttrReassignExpr::_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*/) /*PAssignOp::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*PNode::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_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 failed: src/parser//parser_prod.nit:7832,3--32\n"); nit_exit(1);}
-      ATTR_parser_nodes___AReassignFormExpr____n_assign_op( self) /*AAttrReassignExpr::_n_assign_op*/ =  variable1 /*new_child*/;
+      ATTR_parser_nodes___AAttrFormExpr____n_expr(variable[0]) /*AAttrFormExpr::_n_expr*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label704;
+  }
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___AAttrFormExpr____n_id(variable[0]) /*AAttrFormExpr::_n_id*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*PNode::parent=*/;
+      /* Register variable[4]: Result */
+      variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_TAttrid, ID_TAttrid)) /*cast TAttrid*/;
+      if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AAttrReassignExpr___replace_child, LOCATE_parser_prod, 8177); nit_exit(1);}
+      ATTR_parser_nodes___AAttrFormExpr____n_id(variable[0]) /*AAttrFormExpr::_n_id*/ =  variable[2] /*new_child*/;
     } else { /*if*/
-      ATTR_parser_nodes___AReassignFormExpr____n_assign_op( self) /*AAttrReassignExpr::_n_assign_op*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label675;
-  }
-  variable2 = ATTR_parser_nodes___AReassignFormExpr____n_value( self) /*AAttrReassignExpr::_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*/) /*PExpr::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*PNode::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_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 failed: src/parser//parser_prod.nit:7842,3--28\n"); nit_exit(1);}
-      ATTR_parser_nodes___AReassignFormExpr____n_value( self) /*AAttrReassignExpr::_n_value*/ =  variable1 /*new_child*/;
+      ATTR_parser_nodes___AAttrFormExpr____n_id(variable[0]) /*AAttrFormExpr::_n_id*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label704;
+  }
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___AReassignFormExpr____n_assign_op(variable[0]) /*AReassignFormExpr::_n_assign_op*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*PNode::parent=*/;
+      /* Register variable[4]: Result */
+      variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PAssignOp, ID_PAssignOp)) /*cast PAssignOp*/;
+      if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AAttrReassignExpr___replace_child, LOCATE_parser_prod, 8187); nit_exit(1);}
+      ATTR_parser_nodes___AReassignFormExpr____n_assign_op(variable[0]) /*AReassignFormExpr::_n_assign_op*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      ATTR_parser_nodes___AReassignFormExpr____n_assign_op(variable[0]) /*AReassignFormExpr::_n_assign_op*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label704;
+  }
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___AReassignFormExpr____n_value(variable[0]) /*AReassignFormExpr::_n_value*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*PNode::parent=*/;
+      /* Register variable[4]: Result */
+      variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
+      if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AAttrReassignExpr___replace_child, LOCATE_parser_prod, 8197); nit_exit(1);}
+      ATTR_parser_nodes___AReassignFormExpr____n_value(variable[0]) /*AReassignFormExpr::_n_value*/ =  variable[2] /*new_child*/;
     } else { /*if*/
-      ATTR_parser_nodes___AReassignFormExpr____n_value( self) /*AAttrReassignExpr::_n_value*/ =  NIT_NULL /*null*/;
+      ATTR_parser_nodes___AReassignFormExpr____n_value(variable[0]) /*AReassignFormExpr::_n_value*/ =  NIT_NULL /*null*/;
     }
-    goto return_label675;
+    goto return_label704;
   }
-  return_label675: while(false);
+  return_label704: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AAttrReassignExpr___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AAttrReassignExpr::visit_all (src/parser//parser_prod.nit:7851,5--7863:28)"};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___AAttrFormExpr____n_expr( self) /*AAttrReassignExpr::_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*/) /*PExpr::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AAttrFormExpr____n_expr( self) /*AAttrReassignExpr::_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) /*AAttrReassignExpr::_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*/) /*TAttrid::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AAttrFormExpr____n_id( self) /*AAttrReassignExpr::_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) /*AAttrReassignExpr::_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*/) /*PAssignOp::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AReassignFormExpr____n_assign_op( self) /*AAttrReassignExpr::_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) /*AAttrReassignExpr::_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*/) /*PExpr::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AReassignFormExpr____n_value( self) /*AAttrReassignExpr::_n_value*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
+  struct trace_t trace = {NULL, NULL, 8206, LOCATE_parser_prod___AAttrReassignExpr___visit_all};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AAttrFormExpr____n_expr(variable[0]) /*AAttrFormExpr::_n_expr*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AAttrFormExpr____n_expr(variable[0]) /*AAttrFormExpr::_n_expr*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AAttrFormExpr____n_id(variable[0]) /*AAttrFormExpr::_n_id*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AAttrFormExpr____n_id(variable[0]) /*AAttrFormExpr::_n_id*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AReassignFormExpr____n_assign_op(variable[0]) /*AReassignFormExpr::_n_assign_op*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AReassignFormExpr____n_assign_op(variable[0]) /*AReassignFormExpr::_n_assign_op*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AReassignFormExpr____n_value(variable[0]) /*AReassignFormExpr::_n_value*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AReassignFormExpr____n_value(variable[0]) /*AReassignFormExpr::_n_value*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  return_label705: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AAttrReassignExpr___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AAttrReassignExpr::visit_all_reverse (src/parser//parser_prod.nit:7867,5--7879:28)"};
-  val_t variable0;
-  val_t variable1;
+  struct trace_t trace = {NULL, NULL, 8222, LOCATE_parser_prod___AAttrReassignExpr___visit_all_reverse};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AAttrFormExpr____n_expr(variable[0]) /*AAttrFormExpr::_n_expr*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AAttrFormExpr____n_expr(variable[0]) /*AAttrFormExpr::_n_expr*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AAttrFormExpr____n_id(variable[0]) /*AAttrFormExpr::_n_id*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AAttrFormExpr____n_id(variable[0]) /*AAttrFormExpr::_n_id*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AReassignFormExpr____n_assign_op(variable[0]) /*AReassignFormExpr::_n_assign_op*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AReassignFormExpr____n_assign_op(variable[0]) /*AReassignFormExpr::_n_assign_op*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AReassignFormExpr____n_value(variable[0]) /*AReassignFormExpr::_n_value*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AReassignFormExpr____n_value(variable[0]) /*AReassignFormExpr::_n_value*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  return_label706: while(false);
+  tracehead = trace.prev;
+  return;
+}
+void parser_prod___AAttrReassignExpr___empty_init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 8133, LOCATE_parser_prod___AAttrReassignExpr___empty_init};
+  val_t variable[2];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___AAttrFormExpr____n_expr( self) /*AAttrReassignExpr::_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*/) /*PExpr::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AAttrFormExpr____n_expr( self) /*AAttrReassignExpr::_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) /*AAttrReassignExpr::_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*/) /*TAttrid::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AAttrFormExpr____n_id( self) /*AAttrReassignExpr::_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) /*AAttrReassignExpr::_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*/) /*PAssignOp::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AReassignFormExpr____n_assign_op( self) /*AAttrReassignExpr::_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) /*AAttrReassignExpr::_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*/) /*PExpr::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AReassignFormExpr____n_value( self) /*AAttrReassignExpr::_n_value*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AAttrReassignExpr].i]) return;
+  /* Register variable[1]: Method return value and escape marker */
+  return_label707: while(false);
+  init_table[VAL2OBJ(variable[0])->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, 8135, LOCATE_parser_prod___AAttrReassignExpr___init_aattrreassignexpr};
+  val_t variable[7];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Local variable */
+  variable[2] =  param1;
+  /* Register variable[3]: Local variable */
+  variable[3] =  param2;
+  /* Register variable[4]: Local variable */
+  variable[4] =  param3;
+  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AAttrReassignExpr].i]) return;
+  /* Register variable[5]: Method return value and escape marker */
+  CALL_parser_prod___AAttrReassignExpr___empty_init(variable[0])(variable[0], init_table /*YYY*/) /*AAttrReassignExpr::empty_init*/;
+  ATTR_parser_nodes___AAttrFormExpr____n_expr(variable[0]) /*AAttrFormExpr::_n_expr*/ =  variable[1] /*n_expr*/;
+  /* Register variable[6]: Result */
+  variable[6] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_expr*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_expr*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n_expr*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_expr*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n_expr*/)( variable[1] /*n_expr*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[6])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n_expr*/)( variable[1] /*n_expr*/, variable[0]) /*PNode::parent=*/;
+  }
+  ATTR_parser_nodes___AAttrFormExpr____n_id(variable[0]) /*AAttrFormExpr::_n_id*/ =  variable[2] /*n_id*/;
+  /* Register variable[6]: Result */
+  variable[6] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*n_id*/ ==  NIT_NULL /*null*/) || (( variable[2] /*n_id*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*n_id*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*n_id*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*n_id*/)( variable[2] /*n_id*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[6])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[2] /*n_id*/)( variable[2] /*n_id*/, variable[0]) /*PNode::parent=*/;
+  }
+  ATTR_parser_nodes___AReassignFormExpr____n_assign_op(variable[0]) /*AReassignFormExpr::_n_assign_op*/ =  variable[3] /*n_assign_op*/;
+  /* Register variable[6]: Result */
+  variable[6] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[3] /*n_assign_op*/ ==  NIT_NULL /*null*/) || (( variable[3] /*n_assign_op*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[3] /*n_assign_op*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[3] /*n_assign_op*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[3] /*n_assign_op*/)( variable[3] /*n_assign_op*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[6])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[3] /*n_assign_op*/)( variable[3] /*n_assign_op*/, variable[0]) /*PNode::parent=*/;
+  }
+  ATTR_parser_nodes___AReassignFormExpr____n_value(variable[0]) /*AReassignFormExpr::_n_value*/ =  variable[4] /*n_value*/;
+  /* Register variable[6]: Result */
+  variable[6] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[4] /*n_value*/ ==  NIT_NULL /*null*/) || (( variable[4] /*n_value*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[4] /*n_value*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[4] /*n_value*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[4] /*n_value*/)( variable[4] /*n_value*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[6])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[4] /*n_value*/)( variable[4] /*n_value*/, variable[0]) /*PNode::parent=*/;
+  }
+  return_label708: while(false);
+  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AAttrReassignExpr].i] = 1;
   tracehead = trace.prev;
   return;
 }
 void parser_prod___ACallExpr___n_expr__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::ACallExpr::n_expr= (src/parser//parser_prod.nit:7884,5--7888:20)"};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  variable0 =  param0;
-  ATTR_parser_nodes___ASendExpr____n_expr( self) /*ACallExpr::_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*/) /*PExpr::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PExpr::parent=*/;
+  struct trace_t trace = {NULL, NULL, 8239, LOCATE_parser_prod___ACallExpr___n_expr__eq};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  ATTR_parser_nodes___ASendExpr____n_expr(variable[0]) /*ASendExpr::_n_expr*/ =  variable[1] /*n*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[0]) /*PNode::parent=*/;
   }
+  return_label709: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___ACallExpr___n_id__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::ACallExpr::n_id= (src/parser//parser_prod.nit:7891,5--7895:20)"};
-  val_t variable0;
-  val_t variable1;
+  struct trace_t trace = {NULL, NULL, 8246, LOCATE_parser_prod___ACallExpr___n_id__eq};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  variable0 =  param0;
-  ATTR_parser_nodes___ACallFormExpr____n_id( self) /*ACallExpr::_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*/) /*TId::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*TId::parent=*/;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  ATTR_parser_nodes___ACallFormExpr____n_id(variable[0]) /*ACallFormExpr::_n_id*/ =  variable[1] /*n*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[0]) /*PNode::parent=*/;
   }
+  return_label710: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___ACallExpr___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, "parser_prod::ACallExpr::empty_init (src/parser//parser_prod.nit:7899,5--27)"};
-  trace.prev = tracehead; tracehead = &trace;
-  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, "parser_prod::ACallExpr::init_acallexpr (src/parser//parser_prod.nit:7901,5--7919:17)"};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  val_t variable3;
-    val_t variable4;
-    val_t variable5;
-  trace.prev = tracehead; tracehead = &trace;
-  variable0 =  param0;
-  variable1 =  param1;
-  variable2 =  param2;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ACallExpr].i]) return;
-  ATTR_parser_nodes___ASendExpr____n_expr( self) /*ACallExpr::_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*/) /*PExpr::==*/)))))));
-  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) /*PExpr::parent=*/;
-  }
-  ATTR_parser_nodes___ACallFormExpr____n_id( self) /*ACallExpr::_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*/) /*TId::==*/)))))));
-  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) /*TId::parent=*/;
-  }
-  variable3 = NEW_list___List___init(); /*new List[PExpr]*/
-  ATTR_parser_nodes___ACallFormExpr____n_args( self) /*ACallExpr::_n_args*/ = variable3;
-  variable3 = ((array___AbstractArray___iterator_t)CALL( variable2 /*n_args*/,COLOR_abstract_collection___Collection___iterator))( variable2 /*n_args*/) /*Array::iterator*/;
+void parser_prod___ACallExpr___replace_child(val_t  self, val_t  param0, val_t  param1) {
+  struct trace_t trace = {NULL, NULL, 8286, LOCATE_parser_prod___ACallExpr___replace_child};
+  val_t variable[8];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Local variable */
+  variable[2] =  param1;
+  /* Register variable[3]: Method return value and escape marker */
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ACallExpr___replace_child, LOCATE_parser_prod, 8288); nit_exit(1);}
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___ASendExpr____n_expr(variable[0]) /*ASendExpr::_n_expr*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*PNode::parent=*/;
+      /* Register variable[4]: Result */
+      variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
+      if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ACallExpr___replace_child, LOCATE_parser_prod, 8292); nit_exit(1);}
+      ATTR_parser_nodes___ASendExpr____n_expr(variable[0]) /*ASendExpr::_n_expr*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      ATTR_parser_nodes___ASendExpr____n_expr(variable[0]) /*ASendExpr::_n_expr*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label711;
+  }
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___ACallFormExpr____n_id(variable[0]) /*ACallFormExpr::_n_id*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*PNode::parent=*/;
+      /* Register variable[4]: Result */
+      variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_TId, ID_TId)) /*cast TId*/;
+      if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ACallExpr___replace_child, LOCATE_parser_prod, 8302); nit_exit(1);}
+      ATTR_parser_nodes___ACallFormExpr____n_id(variable[0]) /*ACallFormExpr::_n_id*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      ATTR_parser_nodes___ACallFormExpr____n_id(variable[0]) /*ACallFormExpr::_n_id*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label711;
+  }
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___ACallFormExpr____n_args(variable[0]) /*ACallFormExpr::_n_args*/;
+  /* Register variable[4]: Result */
+  variable[4] = CALL_abstract_collection___Collection___length(variable[4])(variable[4]) /*List::length*/;
+  /* Register variable[4]: Result */
+  variable[4] = NEW_Range_range___Range___without_last( TAG_Int(0), variable[4]) /*new Range[Int]*/;
+  /* Register variable[4]: For iterator */
+  variable[4] = CALL_abstract_collection___Collection___iterator(variable[4])(variable[4]) /*Range::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 failed: src/parser//parser_prod.nit:7917,3--20\n"); nit_exit(1);}
-    variable5 = ATTR_parser_nodes___ACallFormExpr____n_args( self) /*ACallExpr::_n_args*/;
-    ((abstract_collection___IndexedCollection___add_t)CALL(variable5,COLOR_abstract_collection___SimpleCollection___add))(variable5,  variable4 /*n*/) /*List::add*/;
-    ((parser_prod___PNode___parent__eq_t)CALL( variable4 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable4 /*n*/,  self) /*PExpr::parent=*/;
-    continue_682: while(0);
-    ((array___ArrayIterator___next_t)CALL(variable3,COLOR_abstract_collection___Iterator___next))(variable3) /*ArrayIterator::next*/;
+    /* Register variable[5]: For 'is_ok' result */
+    variable[5] = CALL_abstract_collection___Iterator___is_ok(variable[4])(variable[4]) /*Iterator::is_ok*/;
+    if (!UNTAG_Bool(variable[5])) break; /*for*/
+    variable[5] = CALL_abstract_collection___Iterator___item(variable[4])(variable[4]) /*Iterator::item*/ /* Ensure var: For item*/;
+    /* Register variable[6]: Local variable */
+    variable[6] = variable[5];
+    /* Register variable[7]: Result */
+    variable[7] = ATTR_parser_nodes___ACallFormExpr____n_args(variable[0]) /*ACallFormExpr::_n_args*/;
+    /* Register variable[7]: Result */
+    variable[7] = CALL_abstract_collection___MapRead_____bra(variable[7])(variable[7],  variable[6] /*i*/) /*List::[]*/;
+    /* Register variable[7]: Result */
+    variable[7] = TAG_Bool((variable[7] ==  variable[1] /*old_child*/) || ((variable[7] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[7])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[7], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[7])(variable[7],  variable[1] /*old_child*/) /*Object::==*/)))));
+    if (UNTAG_Bool(variable[7])) { /*if*/
+      /* Register variable[7]: Result */
+      variable[7] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+      if (UNTAG_Bool(variable[7])) { /*if*/
+        /* Register variable[7]: Result */
+        variable[7] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
+        if (!UNTAG_Bool(variable[7])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ACallExpr___replace_child, LOCATE_parser_prod, 8312); nit_exit(1);}
+        /* Register variable[7]: Result */
+        variable[7] = ATTR_parser_nodes___ACallFormExpr____n_args(variable[0]) /*ACallFormExpr::_n_args*/;
+        CALL_abstract_collection___Map_____braeq(variable[7])(variable[7],  variable[6] /*i*/,  variable[2] /*new_child*/) /*List::[]=*/;
+        CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*PNode::parent=*/;
+      } else { /*if*/
+        /* Register variable[7]: Result */
+        variable[7] = ATTR_parser_nodes___ACallFormExpr____n_args(variable[0]) /*ACallFormExpr::_n_args*/;
+        CALL_abstract_collection___Map___remove_at(variable[7])(variable[7],  variable[6] /*i*/) /*List::remove_at*/;
+      }
+      goto return_label711;
+    }
+    continue_712: while(0);
+    CALL_abstract_collection___Iterator___next(variable[4])(variable[4]) /*Iterator::next*/;
   }
-  break_682: 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, "parser_prod::ACallExpr::replace_child (src/parser//parser_prod.nit:7923,5--7955:22)"};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  val_t variable3;
-    val_t variable4;
-  trace.prev = tracehead; tracehead = &trace;
-  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*/) /*PNode::==*/)))))));
-  if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert failed: src/parser//parser_prod.nit:7925,9--32\n"); nit_exit(1);}
-  variable2 = ATTR_parser_nodes___ASendExpr____n_expr( self) /*ACallExpr::_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*/) /*PExpr::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*PNode::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_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 failed: src/parser//parser_prod.nit:7929,3--28\n"); nit_exit(1);}
-      ATTR_parser_nodes___ASendExpr____n_expr( self) /*ACallExpr::_n_expr*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___ASendExpr____n_expr( self) /*ACallExpr::_n_expr*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label683;
-  }
-  variable2 = ATTR_parser_nodes___ACallFormExpr____n_id( self) /*ACallExpr::_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*/) /*TId::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*PNode::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_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 failed: src/parser//parser_prod.nit:7939,3--26\n"); nit_exit(1);}
-      ATTR_parser_nodes___ACallFormExpr____n_id( self) /*ACallExpr::_n_id*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___ACallFormExpr____n_id( self) /*ACallExpr::_n_id*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label683;
-  }
-  variable2 = ATTR_parser_nodes___ACallFormExpr____n_args( self) /*ACallExpr::_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[Int]*/
-  variable2 = variable3;
-  variable2 = ((range___Range___iterator_t)CALL(variable2,COLOR_abstract_collection___Collection___iterator))(variable2) /*Range::iterator*/;
+  break_712: while(0);
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___ASendExpr____n_closure_defs(variable[0]) /*ASendExpr::_n_closure_defs*/;
+  /* Register variable[4]: Result */
+  variable[4] = CALL_abstract_collection___Collection___length(variable[4])(variable[4]) /*List::length*/;
+  /* Register variable[4]: Result */
+  variable[4] = NEW_Range_range___Range___without_last( TAG_Int(0), variable[4]) /*new Range[Int]*/;
+  /* Register variable[4]: For iterator */
+  variable[4] = CALL_abstract_collection___Collection___iterator(variable[4])(variable[4]) /*Range::iterator*/;
   while (true) { /*for*/
-    variable3 = ((abstract_collection___Iterator___is_ok_t)CALL(variable2,COLOR_abstract_collection___Iterator___is_ok))(variable2) /*Iterator::is_ok*/;
-    if (!UNTAG_Bool(variable3)) break; /*for*/
-    variable3 = ((abstract_collection___Iterator___item_t)CALL(variable2,COLOR_abstract_collection___Iterator___item))(variable2) /*Iterator::item*/;
-    variable4 = ATTR_parser_nodes___ACallFormExpr____n_args( self) /*ACallExpr::_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*/) /*PExpr::==*/)))));
-    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*/) /*PNode::==*/)))))));
-      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 failed: src/parser//parser_prod.nit:7949,7--32\n"); nit_exit(1);}
-        variable4 = ATTR_parser_nodes___ACallFormExpr____n_args( self) /*ACallExpr::_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) /*PExpr::parent=*/;
+    /* Register variable[5]: For 'is_ok' result */
+    variable[5] = CALL_abstract_collection___Iterator___is_ok(variable[4])(variable[4]) /*Iterator::is_ok*/;
+    if (!UNTAG_Bool(variable[5])) break; /*for*/
+    variable[5] = CALL_abstract_collection___Iterator___item(variable[4])(variable[4]) /*Iterator::item*/ /* Ensure var: For item*/;
+    /* Register variable[6]: Local variable */
+    variable[6] = variable[5];
+    /* Register variable[7]: Result */
+    variable[7] = ATTR_parser_nodes___ASendExpr____n_closure_defs(variable[0]) /*ASendExpr::_n_closure_defs*/;
+    /* Register variable[7]: Result */
+    variable[7] = CALL_abstract_collection___MapRead_____bra(variable[7])(variable[7],  variable[6] /*i*/) /*List::[]*/;
+    /* Register variable[7]: Result */
+    variable[7] = TAG_Bool((variable[7] ==  variable[1] /*old_child*/) || ((variable[7] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[7])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[7], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[7])(variable[7],  variable[1] /*old_child*/) /*Object::==*/)))));
+    if (UNTAG_Bool(variable[7])) { /*if*/
+      /* Register variable[7]: Result */
+      variable[7] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+      if (UNTAG_Bool(variable[7])) { /*if*/
+        /* Register variable[7]: Result */
+        variable[7] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PClosureDef, ID_PClosureDef)) /*cast PClosureDef*/;
+        if (!UNTAG_Bool(variable[7])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ACallExpr___replace_child, LOCATE_parser_prod, 8324); nit_exit(1);}
+        /* Register variable[7]: Result */
+        variable[7] = ATTR_parser_nodes___ASendExpr____n_closure_defs(variable[0]) /*ASendExpr::_n_closure_defs*/;
+        CALL_abstract_collection___Map_____braeq(variable[7])(variable[7],  variable[6] /*i*/,  variable[2] /*new_child*/) /*List::[]=*/;
+        CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*PNode::parent=*/;
       } else { /*if*/
-        variable4 = ATTR_parser_nodes___ACallFormExpr____n_args( self) /*ACallExpr::_n_args*/;
-        ((list___List___remove_at_t)CALL(variable4,COLOR_abstract_collection___Map___remove_at))(variable4,  variable3 /*i*/) /*List::remove_at*/;
+        /* Register variable[7]: Result */
+        variable[7] = ATTR_parser_nodes___ASendExpr____n_closure_defs(variable[0]) /*ASendExpr::_n_closure_defs*/;
+        CALL_abstract_collection___Map___remove_at(variable[7])(variable[7],  variable[6] /*i*/) /*List::remove_at*/;
       }
-      goto return_label683;
+      goto return_label711;
     }
-    continue_684: while(0);
-    ((abstract_collection___Iterator___next_t)CALL(variable2,COLOR_abstract_collection___Iterator___next))(variable2) /*Iterator::next*/;
+    continue_713: while(0);
+    CALL_abstract_collection___Iterator___next(variable[4])(variable[4]) /*Iterator::next*/;
   }
-  break_684: while(0);
-  return_label683: while(false);
+  break_713: while(0);
+  return_label711: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___ACallExpr___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::ACallExpr::visit_all (src/parser//parser_prod.nit:7960,5--7969:25)"};
-  val_t variable0;
-  val_t variable1;
-    val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___ASendExpr____n_expr( self) /*ACallExpr::_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*/) /*PExpr::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___ASendExpr____n_expr( self) /*ACallExpr::_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) /*ACallExpr::_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*/) /*TId::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___ACallFormExpr____n_id( self) /*ACallExpr::_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) /*ACallExpr::_n_args*/;
-  variable1 = ((list___List___iterator_t)CALL(variable1,COLOR_abstract_collection___Collection___iterator))(variable1) /*List::iterator*/;
+  struct trace_t trace = {NULL, NULL, 8335, LOCATE_parser_prod___ACallExpr___visit_all};
+  val_t variable[6];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___ASendExpr____n_expr(variable[0]) /*ASendExpr::_n_expr*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___ASendExpr____n_expr(variable[0]) /*ASendExpr::_n_expr*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___ACallFormExpr____n_id(variable[0]) /*ACallFormExpr::_n_id*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___ACallFormExpr____n_id(variable[0]) /*ACallFormExpr::_n_id*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___ACallFormExpr____n_args(variable[0]) /*ACallFormExpr::_n_args*/;
+  /* Register variable[3]: For iterator */
+  variable[3] = CALL_abstract_collection___Collection___iterator(variable[3])(variable[3]) /*List::iterator*/;
   while (true) { /*for*/
-    variable2 = ((list___ListIterator___is_ok_t)CALL(variable1,COLOR_abstract_collection___Iterator___is_ok))(variable1) /*ListIterator::is_ok*/;
-    if (!UNTAG_Bool(variable2)) break; /*for*/
-    variable2 = ((list___ListIterator___item_t)CALL(variable1,COLOR_abstract_collection___Iterator___item))(variable1) /*ListIterator::item*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/,  variable2 /*n*/) /*Visitor::visit*/;
-    continue_686: while(0);
-    ((list___ListIterator___next_t)CALL(variable1,COLOR_abstract_collection___Iterator___next))(variable1) /*ListIterator::next*/;
+    /* Register variable[4]: For 'is_ok' result */
+    variable[4] = CALL_abstract_collection___Iterator___is_ok(variable[3])(variable[3]) /*ListIterator::is_ok*/;
+    if (!UNTAG_Bool(variable[4])) break; /*for*/
+    variable[4] = CALL_abstract_collection___Iterator___item(variable[3])(variable[3]) /*ListIterator::item*/ /* Ensure var: For item*/;
+    /* Register variable[5]: Local variable */
+    variable[5] = variable[4];
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/,  variable[5] /*n*/) /*Visitor::visit*/;
+    continue_715: while(0);
+    CALL_abstract_collection___Iterator___next(variable[3])(variable[3]) /*ListIterator::next*/;
+  }
+  break_715: while(0);
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___ASendExpr____n_closure_defs(variable[0]) /*ASendExpr::_n_closure_defs*/;
+  /* Register variable[3]: For iterator */
+  variable[3] = CALL_abstract_collection___Collection___iterator(variable[3])(variable[3]) /*List::iterator*/;
+  while (true) { /*for*/
+    /* Register variable[4]: For 'is_ok' result */
+    variable[4] = CALL_abstract_collection___Iterator___is_ok(variable[3])(variable[3]) /*ListIterator::is_ok*/;
+    if (!UNTAG_Bool(variable[4])) break; /*for*/
+    variable[4] = CALL_abstract_collection___Iterator___item(variable[3])(variable[3]) /*ListIterator::item*/ /* Ensure var: For item*/;
+    /* Register variable[5]: Local variable */
+    variable[5] = variable[4];
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/,  variable[5] /*n*/) /*Visitor::visit*/;
+    continue_716: while(0);
+    CALL_abstract_collection___Iterator___next(variable[3])(variable[3]) /*ListIterator::next*/;
   }
-  break_686: while(0);
+  break_716: while(0);
+  return_label714: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___ACallExpr___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::ACallExpr::visit_all_reverse (src/parser//parser_prod.nit:7973,5--7985:11)"};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___ASendExpr____n_expr( self) /*ACallExpr::_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*/) /*PExpr::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___ASendExpr____n_expr( self) /*ACallExpr::_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) /*ACallExpr::_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*/) /*TId::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___ACallFormExpr____n_id( self) /*ACallExpr::_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) /*ACallExpr::_n_args*/;
-  variable2 = ((list___List___length_t)CALL(variable2,COLOR_abstract_collection___Collection___length))(variable2) /*List::length*/;
-  variable1 = variable2;
+  struct trace_t trace = {NULL, NULL, 8351, LOCATE_parser_prod___ACallExpr___visit_all_reverse};
+  val_t variable[5];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___ASendExpr____n_expr(variable[0]) /*ASendExpr::_n_expr*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___ASendExpr____n_expr(variable[0]) /*ASendExpr::_n_expr*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___ACallFormExpr____n_id(variable[0]) /*ACallFormExpr::_n_id*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___ACallFormExpr____n_id(variable[0]) /*ACallFormExpr::_n_id*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Local variable */
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___ACallFormExpr____n_args(variable[0]) /*ACallFormExpr::_n_args*/;
+  /* Register variable[4]: Result */
+  variable[4] = CALL_abstract_collection___Collection___length(variable[4])(variable[4]) /*List::length*/;
+  variable[3] = variable[4];
+  while (true) { /*while*/
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(UNTAG_Int( variable[3] /*i*/)>=UNTAG_Int( TAG_Int(0)));
+    if (!UNTAG_Bool(variable[4])) break; /* while*/
+    /* Register variable[4]: Result */
+    variable[4] = ATTR_parser_nodes___ACallFormExpr____n_args(variable[0]) /*ACallFormExpr::_n_args*/;
+    /* Register variable[4]: Result */
+    variable[4] = CALL_abstract_collection___MapRead_____bra(variable[4])(variable[4],  variable[3] /*i*/) /*List::[]*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[4]) /*Visitor::visit*/;
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Int(UNTAG_Int( variable[3] /*i*/)-UNTAG_Int( TAG_Int(1)));
+    variable[3] = variable[4] /*i=*/;
+    continue_718: while(0);
+  }
+  break_718: while(0);
+  /* Register variable[3]: Local variable */
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___ASendExpr____n_closure_defs(variable[0]) /*ASendExpr::_n_closure_defs*/;
+  /* Register variable[4]: Result */
+  variable[4] = CALL_abstract_collection___Collection___length(variable[4])(variable[4]) /*List::length*/;
+  variable[3] = variable[4];
   while (true) { /*while*/
-    variable2 = TAG_Bool(UNTAG_Int( variable1 /*i*/)>=UNTAG_Int( TAG_Int(0)));
-    if (!UNTAG_Bool(variable2)) break; /* while*/
-    variable2 = ATTR_parser_nodes___ACallFormExpr____n_args( self) /*ACallExpr::_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_688: while(0);
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(UNTAG_Int( variable[3] /*i*/)>=UNTAG_Int( TAG_Int(0)));
+    if (!UNTAG_Bool(variable[4])) break; /* while*/
+    /* Register variable[4]: Result */
+    variable[4] = ATTR_parser_nodes___ASendExpr____n_closure_defs(variable[0]) /*ASendExpr::_n_closure_defs*/;
+    /* Register variable[4]: Result */
+    variable[4] = CALL_abstract_collection___MapRead_____bra(variable[4])(variable[4],  variable[3] /*i*/) /*List::[]*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[4]) /*Visitor::visit*/;
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Int(UNTAG_Int( variable[3] /*i*/)-UNTAG_Int( TAG_Int(1)));
+    variable[3] = variable[4] /*i=*/;
+    continue_719: while(0);
+  }
+  break_719: while(0);
+  return_label717: while(false);
+  tracehead = trace.prev;
+  return;
+}
+void parser_prod___ACallExpr___empty_init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 8254, LOCATE_parser_prod___ACallExpr___empty_init};
+  val_t variable[2];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ACallExpr].i]) return;
+  /* Register variable[1]: Method return value and escape marker */
+  return_label720: while(false);
+  init_table[VAL2OBJ(variable[0])->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, val_t  param3, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 8256, LOCATE_parser_prod___ACallExpr___init_acallexpr};
+  val_t variable[10];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Local variable */
+  variable[2] =  param1;
+  /* Register variable[3]: Local variable */
+  variable[3] =  param2;
+  /* Register variable[4]: Local variable */
+  variable[4] =  param3;
+  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ACallExpr].i]) return;
+  /* Register variable[5]: Method return value and escape marker */
+  CALL_parser_prod___ACallExpr___empty_init(variable[0])(variable[0], init_table /*YYY*/) /*ACallExpr::empty_init*/;
+  ATTR_parser_nodes___ASendExpr____n_expr(variable[0]) /*ASendExpr::_n_expr*/ =  variable[1] /*n_expr*/;
+  /* Register variable[6]: Result */
+  variable[6] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_expr*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_expr*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n_expr*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_expr*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n_expr*/)( variable[1] /*n_expr*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[6])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n_expr*/)( variable[1] /*n_expr*/, variable[0]) /*PNode::parent=*/;
+  }
+  ATTR_parser_nodes___ACallFormExpr____n_id(variable[0]) /*ACallFormExpr::_n_id*/ =  variable[2] /*n_id*/;
+  /* Register variable[6]: Result */
+  variable[6] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*n_id*/ ==  NIT_NULL /*null*/) || (( variable[2] /*n_id*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*n_id*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*n_id*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*n_id*/)( variable[2] /*n_id*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[6])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[2] /*n_id*/)( variable[2] /*n_id*/, variable[0]) /*PNode::parent=*/;
+  }
+  /* Register variable[6]: Result */
+  variable[6] = NEW_List_list___List___init() /*new List[PExpr]*/;
+  ATTR_parser_nodes___ACallFormExpr____n_args(variable[0]) /*ACallFormExpr::_n_args*/ = variable[6];
+  /* Register variable[6]: For iterator */
+  variable[6] = CALL_abstract_collection___Collection___iterator( variable[3] /*n_args*/)( variable[3] /*n_args*/) /*Collection::iterator*/;
+  while (true) { /*for*/
+    /* Register variable[7]: For 'is_ok' result */
+    variable[7] = CALL_abstract_collection___Iterator___is_ok(variable[6])(variable[6]) /*Iterator::is_ok*/;
+    if (!UNTAG_Bool(variable[7])) break; /*for*/
+    variable[7] = CALL_abstract_collection___Iterator___item(variable[6])(variable[6]) /*Iterator::item*/ /* Ensure var: For item*/;
+    /* Register variable[8]: Local variable */
+    variable[8] = variable[7];
+    /* Register variable[9]: Result */
+    variable[9] = TAG_Bool(( variable[8] /*n*/==NIT_NULL) || VAL_ISA( variable[8] /*n*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
+    if (!UNTAG_Bool(variable[9])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ACallExpr___init_acallexpr, LOCATE_parser_prod, 8274); nit_exit(1);}
+    /* Register variable[9]: Result */
+    variable[9] = ATTR_parser_nodes___ACallFormExpr____n_args(variable[0]) /*ACallFormExpr::_n_args*/;
+    CALL_abstract_collection___SimpleCollection___add(variable[9])(variable[9],  variable[8] /*n*/) /*IndexedCollection::add*/;
+    CALL_parser_prod___PNode___parent__eq( variable[8] /*n*/)( variable[8] /*n*/, variable[0]) /*PNode::parent=*/;
+    continue_722: while(0);
+    CALL_abstract_collection___Iterator___next(variable[6])(variable[6]) /*Iterator::next*/;
+  }
+  break_722: while(0);
+  /* Register variable[6]: Result */
+  variable[6] = NEW_List_list___List___init() /*new List[PClosureDef]*/;
+  ATTR_parser_nodes___ASendExpr____n_closure_defs(variable[0]) /*ASendExpr::_n_closure_defs*/ = variable[6];
+  /* Register variable[6]: For iterator */
+  variable[6] = CALL_abstract_collection___Collection___iterator( variable[4] /*n_closure_defs*/)( variable[4] /*n_closure_defs*/) /*Collection::iterator*/;
+  while (true) { /*for*/
+    /* Register variable[7]: For 'is_ok' result */
+    variable[7] = CALL_abstract_collection___Iterator___is_ok(variable[6])(variable[6]) /*Iterator::is_ok*/;
+    if (!UNTAG_Bool(variable[7])) break; /*for*/
+    variable[7] = CALL_abstract_collection___Iterator___item(variable[6])(variable[6]) /*Iterator::item*/ /* Ensure var: For item*/;
+    /* Register variable[8]: Local variable */
+    variable[8] = variable[7];
+    /* Register variable[9]: Result */
+    variable[9] = TAG_Bool(( variable[8] /*n*/==NIT_NULL) || VAL_ISA( variable[8] /*n*/, COLOR_PClosureDef, ID_PClosureDef)) /*cast PClosureDef*/;
+    if (!UNTAG_Bool(variable[9])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ACallExpr___init_acallexpr, LOCATE_parser_prod, 8280); nit_exit(1);}
+    /* Register variable[9]: Result */
+    variable[9] = ATTR_parser_nodes___ASendExpr____n_closure_defs(variable[0]) /*ASendExpr::_n_closure_defs*/;
+    CALL_abstract_collection___SimpleCollection___add(variable[9])(variable[9],  variable[8] /*n*/) /*IndexedCollection::add*/;
+    CALL_parser_prod___PNode___parent__eq( variable[8] /*n*/)( variable[8] /*n*/, variable[0]) /*PNode::parent=*/;
+    continue_723: while(0);
+    CALL_abstract_collection___Iterator___next(variable[6])(variable[6]) /*Iterator::next*/;
   }
-  break_688: while(0);
+  break_723: while(0);
+  return_label721: while(false);
+  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ACallExpr].i] = 1;
   tracehead = trace.prev;
   return;
 }
 void parser_prod___ACallAssignExpr___n_expr__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::ACallAssignExpr::n_expr= (src/parser//parser_prod.nit:7991,5--7995:20)"};
-  val_t variable0;
-  val_t variable1;
+  struct trace_t trace = {NULL, NULL, 8376, LOCATE_parser_prod___ACallAssignExpr___n_expr__eq};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  variable0 =  param0;
-  ATTR_parser_nodes___ASendExpr____n_expr( self) /*ACallAssignExpr::_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*/) /*PExpr::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PExpr::parent=*/;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  ATTR_parser_nodes___ASendExpr____n_expr(variable[0]) /*ASendExpr::_n_expr*/ =  variable[1] /*n*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[0]) /*PNode::parent=*/;
   }
+  return_label724: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___ACallAssignExpr___n_id__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::ACallAssignExpr::n_id= (src/parser//parser_prod.nit:7998,5--8002:20)"};
-  val_t variable0;
-  val_t variable1;
+  struct trace_t trace = {NULL, NULL, 8383, LOCATE_parser_prod___ACallAssignExpr___n_id__eq};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  variable0 =  param0;
-  ATTR_parser_nodes___ACallFormExpr____n_id( self) /*ACallAssignExpr::_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*/) /*TId::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*TId::parent=*/;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  ATTR_parser_nodes___ACallFormExpr____n_id(variable[0]) /*ACallFormExpr::_n_id*/ =  variable[1] /*n*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[0]) /*PNode::parent=*/;
   }
+  return_label725: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___ACallAssignExpr___n_assign__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::ACallAssignExpr::n_assign= (src/parser//parser_prod.nit:8005,5--8009:20)"};
-  val_t variable0;
-  val_t variable1;
+  struct trace_t trace = {NULL, NULL, 8390, LOCATE_parser_prod___ACallAssignExpr___n_assign__eq};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  variable0 =  param0;
-  ATTR_parser_nodes___AAssignFormExpr____n_assign( self) /*ACallAssignExpr::_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*/) /*TAssign::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*TAssign::parent=*/;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  ATTR_parser_nodes___AAssignFormExpr____n_assign(variable[0]) /*AAssignFormExpr::_n_assign*/ =  variable[1] /*n*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[0]) /*PNode::parent=*/;
   }
+  return_label726: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___ACallAssignExpr___n_value__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::ACallAssignExpr::n_value= (src/parser//parser_prod.nit:8012,5--8016:20)"};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  variable0 =  param0;
-  ATTR_parser_nodes___AAssignFormExpr____n_value( self) /*ACallAssignExpr::_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*/) /*PExpr::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PExpr::parent=*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___ACallAssignExpr___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, "parser_prod::ACallAssignExpr::empty_init (src/parser//parser_prod.nit:8020,5--27)"};
+  struct trace_t trace = {NULL, NULL, 8397, LOCATE_parser_prod___ACallAssignExpr___n_value__eq};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  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, "parser_prod::ACallAssignExpr::init_acallassignexpr (src/parser//parser_prod.nit:8022,5--8050:23)"};
-  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;
-  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) /*ACallAssignExpr::_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*/) /*PExpr::==*/)))))));
-  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) /*PExpr::parent=*/;
-  }
-  ATTR_parser_nodes___ACallFormExpr____n_id( self) /*ACallAssignExpr::_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*/) /*TId::==*/)))))));
-  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) /*TId::parent=*/;
-  }
-  variable5 = NEW_list___List___init(); /*new List[PExpr]*/
-  ATTR_parser_nodes___ACallFormExpr____n_args( self) /*ACallAssignExpr::_n_args*/ = variable5;
-  variable5 = ((array___AbstractArray___iterator_t)CALL( variable2 /*n_args*/,COLOR_abstract_collection___Collection___iterator))( variable2 /*n_args*/) /*Array::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 failed: src/parser//parser_prod.nit:8040,3--20\n"); nit_exit(1);}
-    variable7 = ATTR_parser_nodes___ACallFormExpr____n_args( self) /*ACallAssignExpr::_n_args*/;
-    ((abstract_collection___IndexedCollection___add_t)CALL(variable7,COLOR_abstract_collection___SimpleCollection___add))(variable7,  variable6 /*n*/) /*List::add*/;
-    ((parser_prod___PNode___parent__eq_t)CALL( variable6 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable6 /*n*/,  self) /*PExpr::parent=*/;
-    continue_695: while(0);
-    ((array___ArrayIterator___next_t)CALL(variable5,COLOR_abstract_collection___Iterator___next))(variable5) /*ArrayIterator::next*/;
-  }
-  break_695: while(0);
-  ATTR_parser_nodes___AAssignFormExpr____n_assign( self) /*ACallAssignExpr::_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*/) /*TAssign::==*/)))))));
-  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) /*TAssign::parent=*/;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  ATTR_parser_nodes___AAssignFormExpr____n_value(variable[0]) /*AAssignFormExpr::_n_value*/ =  variable[1] /*n*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[0]) /*PNode::parent=*/;
   }
-  ATTR_parser_nodes___AAssignFormExpr____n_value( self) /*ACallAssignExpr::_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*/) /*PExpr::==*/)))))));
-  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) /*PExpr::parent=*/;
-  }
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ACallAssignExpr].i] = 1;
+  return_label727: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___ACallAssignExpr___replace_child(val_t  self, val_t  param0, val_t  param1) {
-  struct trace_t trace = {NULL, "parser_prod::ACallAssignExpr::replace_child (src/parser//parser_prod.nit:8054,5--8107:18)"};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  val_t variable3;
-    val_t variable4;
-  trace.prev = tracehead; tracehead = &trace;
-  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*/) /*PNode::==*/)))))));
-  if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert failed: src/parser//parser_prod.nit:8056,9--32\n"); nit_exit(1);}
-  variable2 = ATTR_parser_nodes___ASendExpr____n_expr( self) /*ACallAssignExpr::_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*/) /*PExpr::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*PNode::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_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 failed: src/parser//parser_prod.nit:8060,3--28\n"); nit_exit(1);}
-      ATTR_parser_nodes___ASendExpr____n_expr( self) /*ACallAssignExpr::_n_expr*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___ASendExpr____n_expr( self) /*ACallAssignExpr::_n_expr*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label696;
-  }
-  variable2 = ATTR_parser_nodes___ACallFormExpr____n_id( self) /*ACallAssignExpr::_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*/) /*TId::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*PNode::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_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 failed: src/parser//parser_prod.nit:8070,3--26\n"); nit_exit(1);}
-      ATTR_parser_nodes___ACallFormExpr____n_id( self) /*ACallAssignExpr::_n_id*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___ACallFormExpr____n_id( self) /*ACallAssignExpr::_n_id*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label696;
-  }
-  variable2 = ATTR_parser_nodes___ACallFormExpr____n_args( self) /*ACallAssignExpr::_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[Int]*/
-  variable2 = variable3;
-  variable2 = ((range___Range___iterator_t)CALL(variable2,COLOR_abstract_collection___Collection___iterator))(variable2) /*Range::iterator*/;
+  struct trace_t trace = {NULL, NULL, 8440, LOCATE_parser_prod___ACallAssignExpr___replace_child};
+  val_t variable[8];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Local variable */
+  variable[2] =  param1;
+  /* Register variable[3]: Method return value and escape marker */
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ACallAssignExpr___replace_child, LOCATE_parser_prod, 8442); nit_exit(1);}
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___ASendExpr____n_expr(variable[0]) /*ASendExpr::_n_expr*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*PNode::parent=*/;
+      /* Register variable[4]: Result */
+      variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
+      if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ACallAssignExpr___replace_child, LOCATE_parser_prod, 8446); nit_exit(1);}
+      ATTR_parser_nodes___ASendExpr____n_expr(variable[0]) /*ASendExpr::_n_expr*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      ATTR_parser_nodes___ASendExpr____n_expr(variable[0]) /*ASendExpr::_n_expr*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label728;
+  }
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___ACallFormExpr____n_id(variable[0]) /*ACallFormExpr::_n_id*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*PNode::parent=*/;
+      /* Register variable[4]: Result */
+      variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_TId, ID_TId)) /*cast TId*/;
+      if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ACallAssignExpr___replace_child, LOCATE_parser_prod, 8456); nit_exit(1);}
+      ATTR_parser_nodes___ACallFormExpr____n_id(variable[0]) /*ACallFormExpr::_n_id*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      ATTR_parser_nodes___ACallFormExpr____n_id(variable[0]) /*ACallFormExpr::_n_id*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label728;
+  }
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___ACallFormExpr____n_args(variable[0]) /*ACallFormExpr::_n_args*/;
+  /* Register variable[4]: Result */
+  variable[4] = CALL_abstract_collection___Collection___length(variable[4])(variable[4]) /*List::length*/;
+  /* Register variable[4]: Result */
+  variable[4] = NEW_Range_range___Range___without_last( TAG_Int(0), variable[4]) /*new Range[Int]*/;
+  /* Register variable[4]: For iterator */
+  variable[4] = CALL_abstract_collection___Collection___iterator(variable[4])(variable[4]) /*Range::iterator*/;
   while (true) { /*for*/
-    variable3 = ((abstract_collection___Iterator___is_ok_t)CALL(variable2,COLOR_abstract_collection___Iterator___is_ok))(variable2) /*Iterator::is_ok*/;
-    if (!UNTAG_Bool(variable3)) break; /*for*/
-    variable3 = ((abstract_collection___Iterator___item_t)CALL(variable2,COLOR_abstract_collection___Iterator___item))(variable2) /*Iterator::item*/;
-    variable4 = ATTR_parser_nodes___ACallFormExpr____n_args( self) /*ACallAssignExpr::_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*/) /*PExpr::==*/)))));
-    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*/) /*PNode::==*/)))))));
-      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 failed: src/parser//parser_prod.nit:8080,7--32\n"); nit_exit(1);}
-        variable4 = ATTR_parser_nodes___ACallFormExpr____n_args( self) /*ACallAssignExpr::_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) /*PExpr::parent=*/;
+    /* Register variable[5]: For 'is_ok' result */
+    variable[5] = CALL_abstract_collection___Iterator___is_ok(variable[4])(variable[4]) /*Iterator::is_ok*/;
+    if (!UNTAG_Bool(variable[5])) break; /*for*/
+    variable[5] = CALL_abstract_collection___Iterator___item(variable[4])(variable[4]) /*Iterator::item*/ /* Ensure var: For item*/;
+    /* Register variable[6]: Local variable */
+    variable[6] = variable[5];
+    /* Register variable[7]: Result */
+    variable[7] = ATTR_parser_nodes___ACallFormExpr____n_args(variable[0]) /*ACallFormExpr::_n_args*/;
+    /* Register variable[7]: Result */
+    variable[7] = CALL_abstract_collection___MapRead_____bra(variable[7])(variable[7],  variable[6] /*i*/) /*List::[]*/;
+    /* Register variable[7]: Result */
+    variable[7] = TAG_Bool((variable[7] ==  variable[1] /*old_child*/) || ((variable[7] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[7])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[7], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[7])(variable[7],  variable[1] /*old_child*/) /*Object::==*/)))));
+    if (UNTAG_Bool(variable[7])) { /*if*/
+      /* Register variable[7]: Result */
+      variable[7] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+      if (UNTAG_Bool(variable[7])) { /*if*/
+        /* Register variable[7]: Result */
+        variable[7] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
+        if (!UNTAG_Bool(variable[7])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ACallAssignExpr___replace_child, LOCATE_parser_prod, 8466); nit_exit(1);}
+        /* Register variable[7]: Result */
+        variable[7] = ATTR_parser_nodes___ACallFormExpr____n_args(variable[0]) /*ACallFormExpr::_n_args*/;
+        CALL_abstract_collection___Map_____braeq(variable[7])(variable[7],  variable[6] /*i*/,  variable[2] /*new_child*/) /*List::[]=*/;
+        CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*PNode::parent=*/;
       } else { /*if*/
-        variable4 = ATTR_parser_nodes___ACallFormExpr____n_args( self) /*ACallAssignExpr::_n_args*/;
-        ((list___List___remove_at_t)CALL(variable4,COLOR_abstract_collection___Map___remove_at))(variable4,  variable3 /*i*/) /*List::remove_at*/;
+        /* Register variable[7]: Result */
+        variable[7] = ATTR_parser_nodes___ACallFormExpr____n_args(variable[0]) /*ACallFormExpr::_n_args*/;
+        CALL_abstract_collection___Map___remove_at(variable[7])(variable[7],  variable[6] /*i*/) /*List::remove_at*/;
       }
-      goto return_label696;
-    }
-    continue_697: while(0);
-    ((abstract_collection___Iterator___next_t)CALL(variable2,COLOR_abstract_collection___Iterator___next))(variable2) /*Iterator::next*/;
-  }
-  break_697: while(0);
-  variable2 = ATTR_parser_nodes___AAssignFormExpr____n_assign( self) /*ACallAssignExpr::_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*/) /*TAssign::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*PNode::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_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 failed: src/parser//parser_prod.nit:8092,3--30\n"); nit_exit(1);}
-      ATTR_parser_nodes___AAssignFormExpr____n_assign( self) /*ACallAssignExpr::_n_assign*/ =  variable1 /*new_child*/;
+      goto return_label728;
+    }
+    continue_729: while(0);
+    CALL_abstract_collection___Iterator___next(variable[4])(variable[4]) /*Iterator::next*/;
+  }
+  break_729: while(0);
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___AAssignFormExpr____n_assign(variable[0]) /*AAssignFormExpr::_n_assign*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*PNode::parent=*/;
+      /* Register variable[4]: Result */
+      variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_TAssign, ID_TAssign)) /*cast TAssign*/;
+      if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ACallAssignExpr___replace_child, LOCATE_parser_prod, 8478); nit_exit(1);}
+      ATTR_parser_nodes___AAssignFormExpr____n_assign(variable[0]) /*AAssignFormExpr::_n_assign*/ =  variable[2] /*new_child*/;
     } else { /*if*/
-      ATTR_parser_nodes___AAssignFormExpr____n_assign( self) /*ACallAssignExpr::_n_assign*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label696;
-  }
-  variable2 = ATTR_parser_nodes___AAssignFormExpr____n_value( self) /*ACallAssignExpr::_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*/) /*PExpr::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*PNode::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_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 failed: src/parser//parser_prod.nit:8102,3--28\n"); nit_exit(1);}
-      ATTR_parser_nodes___AAssignFormExpr____n_value( self) /*ACallAssignExpr::_n_value*/ =  variable1 /*new_child*/;
+      ATTR_parser_nodes___AAssignFormExpr____n_assign(variable[0]) /*AAssignFormExpr::_n_assign*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label728;
+  }
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___AAssignFormExpr____n_value(variable[0]) /*AAssignFormExpr::_n_value*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*PNode::parent=*/;
+      /* Register variable[4]: Result */
+      variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
+      if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ACallAssignExpr___replace_child, LOCATE_parser_prod, 8488); nit_exit(1);}
+      ATTR_parser_nodes___AAssignFormExpr____n_value(variable[0]) /*AAssignFormExpr::_n_value*/ =  variable[2] /*new_child*/;
     } else { /*if*/
-      ATTR_parser_nodes___AAssignFormExpr____n_value( self) /*ACallAssignExpr::_n_value*/ =  NIT_NULL /*null*/;
+      ATTR_parser_nodes___AAssignFormExpr____n_value(variable[0]) /*AAssignFormExpr::_n_value*/ =  NIT_NULL /*null*/;
     }
-    goto return_label696;
+    goto return_label728;
   }
-  return_label696: while(false);
+  return_label728: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___ACallAssignExpr___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::ACallAssignExpr::visit_all (src/parser//parser_prod.nit:8111,5--8126:28)"};
-  val_t variable0;
-  val_t variable1;
-    val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___ASendExpr____n_expr( self) /*ACallAssignExpr::_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*/) /*PExpr::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___ASendExpr____n_expr( self) /*ACallAssignExpr::_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) /*ACallAssignExpr::_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*/) /*TId::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___ACallFormExpr____n_id( self) /*ACallAssignExpr::_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) /*ACallAssignExpr::_n_args*/;
-  variable1 = ((list___List___iterator_t)CALL(variable1,COLOR_abstract_collection___Collection___iterator))(variable1) /*List::iterator*/;
+  struct trace_t trace = {NULL, NULL, 8497, LOCATE_parser_prod___ACallAssignExpr___visit_all};
+  val_t variable[6];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___ASendExpr____n_expr(variable[0]) /*ASendExpr::_n_expr*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___ASendExpr____n_expr(variable[0]) /*ASendExpr::_n_expr*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___ACallFormExpr____n_id(variable[0]) /*ACallFormExpr::_n_id*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___ACallFormExpr____n_id(variable[0]) /*ACallFormExpr::_n_id*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___ACallFormExpr____n_args(variable[0]) /*ACallFormExpr::_n_args*/;
+  /* Register variable[3]: For iterator */
+  variable[3] = CALL_abstract_collection___Collection___iterator(variable[3])(variable[3]) /*List::iterator*/;
   while (true) { /*for*/
-    variable2 = ((list___ListIterator___is_ok_t)CALL(variable1,COLOR_abstract_collection___Iterator___is_ok))(variable1) /*ListIterator::is_ok*/;
-    if (!UNTAG_Bool(variable2)) break; /*for*/
-    variable2 = ((list___ListIterator___item_t)CALL(variable1,COLOR_abstract_collection___Iterator___item))(variable1) /*ListIterator::item*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/,  variable2 /*n*/) /*Visitor::visit*/;
-    continue_699: while(0);
-    ((list___ListIterator___next_t)CALL(variable1,COLOR_abstract_collection___Iterator___next))(variable1) /*ListIterator::next*/;
-  }
-  break_699: while(0);
-  variable1 = ATTR_parser_nodes___AAssignFormExpr____n_assign( self) /*ACallAssignExpr::_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*/) /*TAssign::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AAssignFormExpr____n_assign( self) /*ACallAssignExpr::_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) /*ACallAssignExpr::_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*/) /*PExpr::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AAssignFormExpr____n_value( self) /*ACallAssignExpr::_n_value*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
+    /* Register variable[4]: For 'is_ok' result */
+    variable[4] = CALL_abstract_collection___Iterator___is_ok(variable[3])(variable[3]) /*ListIterator::is_ok*/;
+    if (!UNTAG_Bool(variable[4])) break; /*for*/
+    variable[4] = CALL_abstract_collection___Iterator___item(variable[3])(variable[3]) /*ListIterator::item*/ /* Ensure var: For item*/;
+    /* Register variable[5]: Local variable */
+    variable[5] = variable[4];
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/,  variable[5] /*n*/) /*Visitor::visit*/;
+    continue_731: while(0);
+    CALL_abstract_collection___Iterator___next(variable[3])(variable[3]) /*ListIterator::next*/;
+  }
+  break_731: while(0);
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AAssignFormExpr____n_assign(variable[0]) /*AAssignFormExpr::_n_assign*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AAssignFormExpr____n_assign(variable[0]) /*AAssignFormExpr::_n_assign*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AAssignFormExpr____n_value(variable[0]) /*AAssignFormExpr::_n_value*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AAssignFormExpr____n_value(variable[0]) /*AAssignFormExpr::_n_value*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  return_label730: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___ACallAssignExpr___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::ACallAssignExpr::visit_all_reverse (src/parser//parser_prod.nit:8130,5--8149:28)"};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___ASendExpr____n_expr( self) /*ACallAssignExpr::_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*/) /*PExpr::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___ASendExpr____n_expr( self) /*ACallAssignExpr::_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) /*ACallAssignExpr::_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*/) /*TId::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___ACallFormExpr____n_id( self) /*ACallAssignExpr::_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) /*ACallAssignExpr::_n_args*/;
-  variable2 = ((list___List___length_t)CALL(variable2,COLOR_abstract_collection___Collection___length))(variable2) /*List::length*/;
-  variable1 = variable2;
+  struct trace_t trace = {NULL, NULL, 8516, LOCATE_parser_prod___ACallAssignExpr___visit_all_reverse};
+  val_t variable[5];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___ASendExpr____n_expr(variable[0]) /*ASendExpr::_n_expr*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___ASendExpr____n_expr(variable[0]) /*ASendExpr::_n_expr*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___ACallFormExpr____n_id(variable[0]) /*ACallFormExpr::_n_id*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___ACallFormExpr____n_id(variable[0]) /*ACallFormExpr::_n_id*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Local variable */
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___ACallFormExpr____n_args(variable[0]) /*ACallFormExpr::_n_args*/;
+  /* Register variable[4]: Result */
+  variable[4] = CALL_abstract_collection___Collection___length(variable[4])(variable[4]) /*List::length*/;
+  variable[3] = variable[4];
   while (true) { /*while*/
-    variable2 = TAG_Bool(UNTAG_Int( variable1 /*i*/)>=UNTAG_Int( TAG_Int(0)));
-    if (!UNTAG_Bool(variable2)) break; /* while*/
-    variable2 = ATTR_parser_nodes___ACallFormExpr____n_args( self) /*ACallAssignExpr::_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_701: while(0);
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(UNTAG_Int( variable[3] /*i*/)>=UNTAG_Int( TAG_Int(0)));
+    if (!UNTAG_Bool(variable[4])) break; /* while*/
+    /* Register variable[4]: Result */
+    variable[4] = ATTR_parser_nodes___ACallFormExpr____n_args(variable[0]) /*ACallFormExpr::_n_args*/;
+    /* Register variable[4]: Result */
+    variable[4] = CALL_abstract_collection___MapRead_____bra(variable[4])(variable[4],  variable[3] /*i*/) /*List::[]*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[4]) /*Visitor::visit*/;
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Int(UNTAG_Int( variable[3] /*i*/)-UNTAG_Int( TAG_Int(1)));
+    variable[3] = variable[4] /*i=*/;
+    continue_733: while(0);
+  }
+  break_733: while(0);
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AAssignFormExpr____n_assign(variable[0]) /*AAssignFormExpr::_n_assign*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AAssignFormExpr____n_assign(variable[0]) /*AAssignFormExpr::_n_assign*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AAssignFormExpr____n_value(variable[0]) /*AAssignFormExpr::_n_value*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AAssignFormExpr____n_value(variable[0]) /*AAssignFormExpr::_n_value*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  return_label732: while(false);
+  tracehead = trace.prev;
+  return;
+}
+void parser_prod___ACallAssignExpr___empty_init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 8405, LOCATE_parser_prod___ACallAssignExpr___empty_init};
+  val_t variable[2];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ACallAssignExpr].i]) return;
+  /* Register variable[1]: Method return value and escape marker */
+  return_label734: while(false);
+  init_table[VAL2OBJ(variable[0])->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, 8407, LOCATE_parser_prod___ACallAssignExpr___init_acallassignexpr};
+  val_t variable[11];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Local variable */
+  variable[2] =  param1;
+  /* Register variable[3]: Local variable */
+  variable[3] =  param2;
+  /* Register variable[4]: Local variable */
+  variable[4] =  param3;
+  /* Register variable[5]: Local variable */
+  variable[5] =  param4;
+  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ACallAssignExpr].i]) return;
+  /* Register variable[6]: Method return value and escape marker */
+  CALL_parser_prod___ACallAssignExpr___empty_init(variable[0])(variable[0], init_table /*YYY*/) /*ACallAssignExpr::empty_init*/;
+  ATTR_parser_nodes___ASendExpr____n_expr(variable[0]) /*ASendExpr::_n_expr*/ =  variable[1] /*n_expr*/;
+  /* Register variable[7]: Result */
+  variable[7] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_expr*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_expr*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n_expr*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_expr*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n_expr*/)( variable[1] /*n_expr*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[7])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n_expr*/)( variable[1] /*n_expr*/, variable[0]) /*PNode::parent=*/;
+  }
+  ATTR_parser_nodes___ACallFormExpr____n_id(variable[0]) /*ACallFormExpr::_n_id*/ =  variable[2] /*n_id*/;
+  /* Register variable[7]: Result */
+  variable[7] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*n_id*/ ==  NIT_NULL /*null*/) || (( variable[2] /*n_id*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*n_id*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*n_id*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*n_id*/)( variable[2] /*n_id*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[7])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[2] /*n_id*/)( variable[2] /*n_id*/, variable[0]) /*PNode::parent=*/;
+  }
+  /* Register variable[7]: Result */
+  variable[7] = NEW_List_list___List___init() /*new List[PExpr]*/;
+  ATTR_parser_nodes___ACallFormExpr____n_args(variable[0]) /*ACallFormExpr::_n_args*/ = variable[7];
+  /* Register variable[7]: For iterator */
+  variable[7] = CALL_abstract_collection___Collection___iterator( variable[3] /*n_args*/)( variable[3] /*n_args*/) /*Collection::iterator*/;
+  while (true) { /*for*/
+    /* Register variable[8]: For 'is_ok' result */
+    variable[8] = CALL_abstract_collection___Iterator___is_ok(variable[7])(variable[7]) /*Iterator::is_ok*/;
+    if (!UNTAG_Bool(variable[8])) break; /*for*/
+    variable[8] = CALL_abstract_collection___Iterator___item(variable[7])(variable[7]) /*Iterator::item*/ /* Ensure var: For item*/;
+    /* Register variable[9]: Local variable */
+    variable[9] = variable[8];
+    /* Register variable[10]: Result */
+    variable[10] = TAG_Bool(( variable[9] /*n*/==NIT_NULL) || VAL_ISA( variable[9] /*n*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
+    if (!UNTAG_Bool(variable[10])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ACallAssignExpr___init_acallassignexpr, LOCATE_parser_prod, 8426); nit_exit(1);}
+    /* Register variable[10]: Result */
+    variable[10] = ATTR_parser_nodes___ACallFormExpr____n_args(variable[0]) /*ACallFormExpr::_n_args*/;
+    CALL_abstract_collection___SimpleCollection___add(variable[10])(variable[10],  variable[9] /*n*/) /*IndexedCollection::add*/;
+    CALL_parser_prod___PNode___parent__eq( variable[9] /*n*/)( variable[9] /*n*/, variable[0]) /*PNode::parent=*/;
+    continue_736: while(0);
+    CALL_abstract_collection___Iterator___next(variable[7])(variable[7]) /*Iterator::next*/;
   }
-  break_701: while(0);
-  variable1 = ATTR_parser_nodes___AAssignFormExpr____n_assign( self) /*ACallAssignExpr::_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*/) /*TAssign::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AAssignFormExpr____n_assign( self) /*ACallAssignExpr::_n_assign*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
+  break_736: while(0);
+  ATTR_parser_nodes___AAssignFormExpr____n_assign(variable[0]) /*AAssignFormExpr::_n_assign*/ =  variable[4] /*n_assign*/;
+  /* Register variable[7]: Result */
+  variable[7] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[4] /*n_assign*/ ==  NIT_NULL /*null*/) || (( variable[4] /*n_assign*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[4] /*n_assign*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[4] /*n_assign*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[4] /*n_assign*/)( variable[4] /*n_assign*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[7])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[4] /*n_assign*/)( variable[4] /*n_assign*/, variable[0]) /*PNode::parent=*/;
   }
-  variable1 = ATTR_parser_nodes___AAssignFormExpr____n_value( self) /*ACallAssignExpr::_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*/) /*PExpr::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AAssignFormExpr____n_value( self) /*ACallAssignExpr::_n_value*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
+  ATTR_parser_nodes___AAssignFormExpr____n_value(variable[0]) /*AAssignFormExpr::_n_value*/ =  variable[5] /*n_value*/;
+  /* Register variable[7]: Result */
+  variable[7] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[5] /*n_value*/ ==  NIT_NULL /*null*/) || (( variable[5] /*n_value*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[5] /*n_value*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[5] /*n_value*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[5] /*n_value*/)( variable[5] /*n_value*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[7])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[5] /*n_value*/)( variable[5] /*n_value*/, variable[0]) /*PNode::parent=*/;
   }
+  return_label735: while(false);
+  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ACallAssignExpr].i] = 1;
   tracehead = trace.prev;
   return;
 }
 void parser_prod___ACallReassignExpr___n_expr__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::ACallReassignExpr::n_expr= (src/parser//parser_prod.nit:8154,5--8158:20)"};
-  val_t variable0;
-  val_t variable1;
+  struct trace_t trace = {NULL, NULL, 8540, LOCATE_parser_prod___ACallReassignExpr___n_expr__eq};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  variable0 =  param0;
-  ATTR_parser_nodes___ASendExpr____n_expr( self) /*ACallReassignExpr::_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*/) /*PExpr::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PExpr::parent=*/;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  ATTR_parser_nodes___ASendExpr____n_expr(variable[0]) /*ASendExpr::_n_expr*/ =  variable[1] /*n*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[0]) /*PNode::parent=*/;
   }
+  return_label737: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___ACallReassignExpr___n_id__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::ACallReassignExpr::n_id= (src/parser//parser_prod.nit:8161,5--8165:20)"};
-  val_t variable0;
-  val_t variable1;
+  struct trace_t trace = {NULL, NULL, 8547, LOCATE_parser_prod___ACallReassignExpr___n_id__eq};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  variable0 =  param0;
-  ATTR_parser_nodes___ACallFormExpr____n_id( self) /*ACallReassignExpr::_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*/) /*TId::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*TId::parent=*/;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  ATTR_parser_nodes___ACallFormExpr____n_id(variable[0]) /*ACallFormExpr::_n_id*/ =  variable[1] /*n*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[0]) /*PNode::parent=*/;
   }
+  return_label738: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___ACallReassignExpr___n_assign_op__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::ACallReassignExpr::n_assign_op= (src/parser//parser_prod.nit:8168,5--8172:20)"};
-  val_t variable0;
-  val_t variable1;
+  struct trace_t trace = {NULL, NULL, 8554, LOCATE_parser_prod___ACallReassignExpr___n_assign_op__eq};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  variable0 =  param0;
-  ATTR_parser_nodes___AReassignFormExpr____n_assign_op( self) /*ACallReassignExpr::_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*/) /*PAssignOp::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PAssignOp::parent=*/;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  ATTR_parser_nodes___AReassignFormExpr____n_assign_op(variable[0]) /*AReassignFormExpr::_n_assign_op*/ =  variable[1] /*n*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[0]) /*PNode::parent=*/;
   }
+  return_label739: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___ACallReassignExpr___n_value__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::ACallReassignExpr::n_value= (src/parser//parser_prod.nit:8175,5--8179:20)"};
-  val_t variable0;
-  val_t variable1;
+  struct trace_t trace = {NULL, NULL, 8561, LOCATE_parser_prod___ACallReassignExpr___n_value__eq};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  variable0 =  param0;
-  ATTR_parser_nodes___AReassignFormExpr____n_value( self) /*ACallReassignExpr::_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*/) /*PExpr::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PExpr::parent=*/;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  ATTR_parser_nodes___AReassignFormExpr____n_value(variable[0]) /*AReassignFormExpr::_n_value*/ =  variable[1] /*n*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[0]) /*PNode::parent=*/;
   }
+  return_label740: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___ACallReassignExpr___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, "parser_prod::ACallReassignExpr::empty_init (src/parser//parser_prod.nit:8183,5--27)"};
-  trace.prev = tracehead; tracehead = &trace;
-  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, "parser_prod::ACallReassignExpr::init_acallreassignexpr (src/parser//parser_prod.nit:8185,5--8213:23)"};
-  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;
-  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) /*ACallReassignExpr::_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*/) /*PExpr::==*/)))))));
-  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) /*PExpr::parent=*/;
-  }
-  ATTR_parser_nodes___ACallFormExpr____n_id( self) /*ACallReassignExpr::_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*/) /*TId::==*/)))))));
-  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) /*TId::parent=*/;
-  }
-  variable5 = NEW_list___List___init(); /*new List[PExpr]*/
-  ATTR_parser_nodes___ACallFormExpr____n_args( self) /*ACallReassignExpr::_n_args*/ = variable5;
-  variable5 = ((array___AbstractArray___iterator_t)CALL( variable2 /*n_args*/,COLOR_abstract_collection___Collection___iterator))( variable2 /*n_args*/) /*Array::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 failed: src/parser//parser_prod.nit:8203,3--20\n"); nit_exit(1);}
-    variable7 = ATTR_parser_nodes___ACallFormExpr____n_args( self) /*ACallReassignExpr::_n_args*/;
-    ((abstract_collection___IndexedCollection___add_t)CALL(variable7,COLOR_abstract_collection___SimpleCollection___add))(variable7,  variable6 /*n*/) /*List::add*/;
-    ((parser_prod___PNode___parent__eq_t)CALL( variable6 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable6 /*n*/,  self) /*PExpr::parent=*/;
-    continue_708: while(0);
-    ((array___ArrayIterator___next_t)CALL(variable5,COLOR_abstract_collection___Iterator___next))(variable5) /*ArrayIterator::next*/;
-  }
-  break_708: while(0);
-  ATTR_parser_nodes___AReassignFormExpr____n_assign_op( self) /*ACallReassignExpr::_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*/) /*PAssignOp::==*/)))))));
-  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) /*PAssignOp::parent=*/;
+void parser_prod___ACallReassignExpr___replace_child(val_t  self, val_t  param0, val_t  param1) {
+  struct trace_t trace = {NULL, NULL, 8604, LOCATE_parser_prod___ACallReassignExpr___replace_child};
+  val_t variable[8];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Local variable */
+  variable[2] =  param1;
+  /* Register variable[3]: Method return value and escape marker */
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ACallReassignExpr___replace_child, LOCATE_parser_prod, 8606); nit_exit(1);}
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___ASendExpr____n_expr(variable[0]) /*ASendExpr::_n_expr*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*PNode::parent=*/;
+      /* Register variable[4]: Result */
+      variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
+      if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ACallReassignExpr___replace_child, LOCATE_parser_prod, 8610); nit_exit(1);}
+      ATTR_parser_nodes___ASendExpr____n_expr(variable[0]) /*ASendExpr::_n_expr*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      ATTR_parser_nodes___ASendExpr____n_expr(variable[0]) /*ASendExpr::_n_expr*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label741;
   }
-  ATTR_parser_nodes___AReassignFormExpr____n_value( self) /*ACallReassignExpr::_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*/) /*PExpr::==*/)))))));
-  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) /*PExpr::parent=*/;
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___ACallFormExpr____n_id(variable[0]) /*ACallFormExpr::_n_id*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*PNode::parent=*/;
+      /* Register variable[4]: Result */
+      variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_TId, ID_TId)) /*cast TId*/;
+      if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ACallReassignExpr___replace_child, LOCATE_parser_prod, 8620); nit_exit(1);}
+      ATTR_parser_nodes___ACallFormExpr____n_id(variable[0]) /*ACallFormExpr::_n_id*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      ATTR_parser_nodes___ACallFormExpr____n_id(variable[0]) /*ACallFormExpr::_n_id*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label741;
   }
-  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, "parser_prod::ACallReassignExpr::replace_child (src/parser//parser_prod.nit:8217,5--8270:18)"};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  val_t variable3;
-    val_t variable4;
-  trace.prev = tracehead; tracehead = &trace;
-  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*/) /*PNode::==*/)))))));
-  if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert failed: src/parser//parser_prod.nit:8219,9--32\n"); nit_exit(1);}
-  variable2 = ATTR_parser_nodes___ASendExpr____n_expr( self) /*ACallReassignExpr::_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*/) /*PExpr::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*PNode::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_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 failed: src/parser//parser_prod.nit:8223,3--28\n"); nit_exit(1);}
-      ATTR_parser_nodes___ASendExpr____n_expr( self) /*ACallReassignExpr::_n_expr*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___ASendExpr____n_expr( self) /*ACallReassignExpr::_n_expr*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label709;
-  }
-  variable2 = ATTR_parser_nodes___ACallFormExpr____n_id( self) /*ACallReassignExpr::_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*/) /*TId::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*PNode::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_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 failed: src/parser//parser_prod.nit:8233,3--26\n"); nit_exit(1);}
-      ATTR_parser_nodes___ACallFormExpr____n_id( self) /*ACallReassignExpr::_n_id*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___ACallFormExpr____n_id( self) /*ACallReassignExpr::_n_id*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label709;
-  }
-  variable2 = ATTR_parser_nodes___ACallFormExpr____n_args( self) /*ACallReassignExpr::_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[Int]*/
-  variable2 = variable3;
-  variable2 = ((range___Range___iterator_t)CALL(variable2,COLOR_abstract_collection___Collection___iterator))(variable2) /*Range::iterator*/;
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___ACallFormExpr____n_args(variable[0]) /*ACallFormExpr::_n_args*/;
+  /* Register variable[4]: Result */
+  variable[4] = CALL_abstract_collection___Collection___length(variable[4])(variable[4]) /*List::length*/;
+  /* Register variable[4]: Result */
+  variable[4] = NEW_Range_range___Range___without_last( TAG_Int(0), variable[4]) /*new Range[Int]*/;
+  /* Register variable[4]: For iterator */
+  variable[4] = CALL_abstract_collection___Collection___iterator(variable[4])(variable[4]) /*Range::iterator*/;
   while (true) { /*for*/
-    variable3 = ((abstract_collection___Iterator___is_ok_t)CALL(variable2,COLOR_abstract_collection___Iterator___is_ok))(variable2) /*Iterator::is_ok*/;
-    if (!UNTAG_Bool(variable3)) break; /*for*/
-    variable3 = ((abstract_collection___Iterator___item_t)CALL(variable2,COLOR_abstract_collection___Iterator___item))(variable2) /*Iterator::item*/;
-    variable4 = ATTR_parser_nodes___ACallFormExpr____n_args( self) /*ACallReassignExpr::_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*/) /*PExpr::==*/)))));
-    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*/) /*PNode::==*/)))))));
-      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 failed: src/parser//parser_prod.nit:8243,7--32\n"); nit_exit(1);}
-        variable4 = ATTR_parser_nodes___ACallFormExpr____n_args( self) /*ACallReassignExpr::_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) /*PExpr::parent=*/;
+    /* Register variable[5]: For 'is_ok' result */
+    variable[5] = CALL_abstract_collection___Iterator___is_ok(variable[4])(variable[4]) /*Iterator::is_ok*/;
+    if (!UNTAG_Bool(variable[5])) break; /*for*/
+    variable[5] = CALL_abstract_collection___Iterator___item(variable[4])(variable[4]) /*Iterator::item*/ /* Ensure var: For item*/;
+    /* Register variable[6]: Local variable */
+    variable[6] = variable[5];
+    /* Register variable[7]: Result */
+    variable[7] = ATTR_parser_nodes___ACallFormExpr____n_args(variable[0]) /*ACallFormExpr::_n_args*/;
+    /* Register variable[7]: Result */
+    variable[7] = CALL_abstract_collection___MapRead_____bra(variable[7])(variable[7],  variable[6] /*i*/) /*List::[]*/;
+    /* Register variable[7]: Result */
+    variable[7] = TAG_Bool((variable[7] ==  variable[1] /*old_child*/) || ((variable[7] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[7])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[7], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[7])(variable[7],  variable[1] /*old_child*/) /*Object::==*/)))));
+    if (UNTAG_Bool(variable[7])) { /*if*/
+      /* Register variable[7]: Result */
+      variable[7] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+      if (UNTAG_Bool(variable[7])) { /*if*/
+        /* Register variable[7]: Result */
+        variable[7] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
+        if (!UNTAG_Bool(variable[7])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ACallReassignExpr___replace_child, LOCATE_parser_prod, 8630); nit_exit(1);}
+        /* Register variable[7]: Result */
+        variable[7] = ATTR_parser_nodes___ACallFormExpr____n_args(variable[0]) /*ACallFormExpr::_n_args*/;
+        CALL_abstract_collection___Map_____braeq(variable[7])(variable[7],  variable[6] /*i*/,  variable[2] /*new_child*/) /*List::[]=*/;
+        CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*PNode::parent=*/;
       } else { /*if*/
-        variable4 = ATTR_parser_nodes___ACallFormExpr____n_args( self) /*ACallReassignExpr::_n_args*/;
-        ((list___List___remove_at_t)CALL(variable4,COLOR_abstract_collection___Map___remove_at))(variable4,  variable3 /*i*/) /*List::remove_at*/;
+        /* Register variable[7]: Result */
+        variable[7] = ATTR_parser_nodes___ACallFormExpr____n_args(variable[0]) /*ACallFormExpr::_n_args*/;
+        CALL_abstract_collection___Map___remove_at(variable[7])(variable[7],  variable[6] /*i*/) /*List::remove_at*/;
       }
-      goto return_label709;
+      goto return_label741;
     }
-    continue_710: while(0);
-    ((abstract_collection___Iterator___next_t)CALL(variable2,COLOR_abstract_collection___Iterator___next))(variable2) /*Iterator::next*/;
+    continue_742: while(0);
+    CALL_abstract_collection___Iterator___next(variable[4])(variable[4]) /*Iterator::next*/;
   }
-  break_710: while(0);
-  variable2 = ATTR_parser_nodes___AReassignFormExpr____n_assign_op( self) /*ACallReassignExpr::_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*/) /*PAssignOp::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*PNode::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_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 failed: src/parser//parser_prod.nit:8255,3--32\n"); nit_exit(1);}
-      ATTR_parser_nodes___AReassignFormExpr____n_assign_op( self) /*ACallReassignExpr::_n_assign_op*/ =  variable1 /*new_child*/;
+  break_742: while(0);
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___AReassignFormExpr____n_assign_op(variable[0]) /*AReassignFormExpr::_n_assign_op*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*PNode::parent=*/;
+      /* Register variable[4]: Result */
+      variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PAssignOp, ID_PAssignOp)) /*cast PAssignOp*/;
+      if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ACallReassignExpr___replace_child, LOCATE_parser_prod, 8642); nit_exit(1);}
+      ATTR_parser_nodes___AReassignFormExpr____n_assign_op(variable[0]) /*AReassignFormExpr::_n_assign_op*/ =  variable[2] /*new_child*/;
     } else { /*if*/
-      ATTR_parser_nodes___AReassignFormExpr____n_assign_op( self) /*ACallReassignExpr::_n_assign_op*/ =  NIT_NULL /*null*/;
+      ATTR_parser_nodes___AReassignFormExpr____n_assign_op(variable[0]) /*AReassignFormExpr::_n_assign_op*/ =  NIT_NULL /*null*/;
     }
-    goto return_label709;
+    goto return_label741;
   }
-  variable2 = ATTR_parser_nodes___AReassignFormExpr____n_value( self) /*ACallReassignExpr::_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*/) /*PExpr::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*PNode::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_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 failed: src/parser//parser_prod.nit:8265,3--28\n"); nit_exit(1);}
-      ATTR_parser_nodes___AReassignFormExpr____n_value( self) /*ACallReassignExpr::_n_value*/ =  variable1 /*new_child*/;
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___AReassignFormExpr____n_value(variable[0]) /*AReassignFormExpr::_n_value*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*PNode::parent=*/;
+      /* Register variable[4]: Result */
+      variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
+      if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ACallReassignExpr___replace_child, LOCATE_parser_prod, 8652); nit_exit(1);}
+      ATTR_parser_nodes___AReassignFormExpr____n_value(variable[0]) /*AReassignFormExpr::_n_value*/ =  variable[2] /*new_child*/;
     } else { /*if*/
-      ATTR_parser_nodes___AReassignFormExpr____n_value( self) /*ACallReassignExpr::_n_value*/ =  NIT_NULL /*null*/;
+      ATTR_parser_nodes___AReassignFormExpr____n_value(variable[0]) /*AReassignFormExpr::_n_value*/ =  NIT_NULL /*null*/;
     }
-    goto return_label709;
+    goto return_label741;
   }
-  return_label709: while(false);
+  return_label741: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___ACallReassignExpr___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::ACallReassignExpr::visit_all (src/parser//parser_prod.nit:8274,5--8289:28)"};
-  val_t variable0;
-  val_t variable1;
-    val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___ASendExpr____n_expr( self) /*ACallReassignExpr::_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*/) /*PExpr::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___ASendExpr____n_expr( self) /*ACallReassignExpr::_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) /*ACallReassignExpr::_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*/) /*TId::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___ACallFormExpr____n_id( self) /*ACallReassignExpr::_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) /*ACallReassignExpr::_n_args*/;
-  variable1 = ((list___List___iterator_t)CALL(variable1,COLOR_abstract_collection___Collection___iterator))(variable1) /*List::iterator*/;
+  struct trace_t trace = {NULL, NULL, 8661, LOCATE_parser_prod___ACallReassignExpr___visit_all};
+  val_t variable[6];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___ASendExpr____n_expr(variable[0]) /*ASendExpr::_n_expr*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___ASendExpr____n_expr(variable[0]) /*ASendExpr::_n_expr*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___ACallFormExpr____n_id(variable[0]) /*ACallFormExpr::_n_id*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___ACallFormExpr____n_id(variable[0]) /*ACallFormExpr::_n_id*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___ACallFormExpr____n_args(variable[0]) /*ACallFormExpr::_n_args*/;
+  /* Register variable[3]: For iterator */
+  variable[3] = CALL_abstract_collection___Collection___iterator(variable[3])(variable[3]) /*List::iterator*/;
   while (true) { /*for*/
-    variable2 = ((list___ListIterator___is_ok_t)CALL(variable1,COLOR_abstract_collection___Iterator___is_ok))(variable1) /*ListIterator::is_ok*/;
-    if (!UNTAG_Bool(variable2)) break; /*for*/
-    variable2 = ((list___ListIterator___item_t)CALL(variable1,COLOR_abstract_collection___Iterator___item))(variable1) /*ListIterator::item*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/,  variable2 /*n*/) /*Visitor::visit*/;
-    continue_712: while(0);
-    ((list___ListIterator___next_t)CALL(variable1,COLOR_abstract_collection___Iterator___next))(variable1) /*ListIterator::next*/;
+    /* Register variable[4]: For 'is_ok' result */
+    variable[4] = CALL_abstract_collection___Iterator___is_ok(variable[3])(variable[3]) /*ListIterator::is_ok*/;
+    if (!UNTAG_Bool(variable[4])) break; /*for*/
+    variable[4] = CALL_abstract_collection___Iterator___item(variable[3])(variable[3]) /*ListIterator::item*/ /* Ensure var: For item*/;
+    /* Register variable[5]: Local variable */
+    variable[5] = variable[4];
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/,  variable[5] /*n*/) /*Visitor::visit*/;
+    continue_744: while(0);
+    CALL_abstract_collection___Iterator___next(variable[3])(variable[3]) /*ListIterator::next*/;
   }
-  break_712: while(0);
-  variable1 = ATTR_parser_nodes___AReassignFormExpr____n_assign_op( self) /*ACallReassignExpr::_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*/) /*PAssignOp::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AReassignFormExpr____n_assign_op( self) /*ACallReassignExpr::_n_assign_op*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
+  break_744: while(0);
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AReassignFormExpr____n_assign_op(variable[0]) /*AReassignFormExpr::_n_assign_op*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AReassignFormExpr____n_assign_op(variable[0]) /*AReassignFormExpr::_n_assign_op*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
-  variable1 = ATTR_parser_nodes___AReassignFormExpr____n_value( self) /*ACallReassignExpr::_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*/) /*PExpr::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AReassignFormExpr____n_value( self) /*ACallReassignExpr::_n_value*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AReassignFormExpr____n_value(variable[0]) /*AReassignFormExpr::_n_value*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AReassignFormExpr____n_value(variable[0]) /*AReassignFormExpr::_n_value*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
+  return_label743: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___ACallReassignExpr___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::ACallReassignExpr::visit_all_reverse (src/parser//parser_prod.nit:8293,5--8312:28)"};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___ASendExpr____n_expr( self) /*ACallReassignExpr::_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*/) /*PExpr::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___ASendExpr____n_expr( self) /*ACallReassignExpr::_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) /*ACallReassignExpr::_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*/) /*TId::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___ACallFormExpr____n_id( self) /*ACallReassignExpr::_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) /*ACallReassignExpr::_n_args*/;
-  variable2 = ((list___List___length_t)CALL(variable2,COLOR_abstract_collection___Collection___length))(variable2) /*List::length*/;
-  variable1 = variable2;
+  struct trace_t trace = {NULL, NULL, 8680, LOCATE_parser_prod___ACallReassignExpr___visit_all_reverse};
+  val_t variable[5];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___ASendExpr____n_expr(variable[0]) /*ASendExpr::_n_expr*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___ASendExpr____n_expr(variable[0]) /*ASendExpr::_n_expr*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___ACallFormExpr____n_id(variable[0]) /*ACallFormExpr::_n_id*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___ACallFormExpr____n_id(variable[0]) /*ACallFormExpr::_n_id*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Local variable */
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___ACallFormExpr____n_args(variable[0]) /*ACallFormExpr::_n_args*/;
+  /* Register variable[4]: Result */
+  variable[4] = CALL_abstract_collection___Collection___length(variable[4])(variable[4]) /*List::length*/;
+  variable[3] = variable[4];
   while (true) { /*while*/
-    variable2 = TAG_Bool(UNTAG_Int( variable1 /*i*/)>=UNTAG_Int( TAG_Int(0)));
-    if (!UNTAG_Bool(variable2)) break; /* while*/
-    variable2 = ATTR_parser_nodes___ACallFormExpr____n_args( self) /*ACallReassignExpr::_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_714: while(0);
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(UNTAG_Int( variable[3] /*i*/)>=UNTAG_Int( TAG_Int(0)));
+    if (!UNTAG_Bool(variable[4])) break; /* while*/
+    /* Register variable[4]: Result */
+    variable[4] = ATTR_parser_nodes___ACallFormExpr____n_args(variable[0]) /*ACallFormExpr::_n_args*/;
+    /* Register variable[4]: Result */
+    variable[4] = CALL_abstract_collection___MapRead_____bra(variable[4])(variable[4],  variable[3] /*i*/) /*List::[]*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[4]) /*Visitor::visit*/;
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Int(UNTAG_Int( variable[3] /*i*/)-UNTAG_Int( TAG_Int(1)));
+    variable[3] = variable[4] /*i=*/;
+    continue_746: while(0);
   }
-  break_714: while(0);
-  variable1 = ATTR_parser_nodes___AReassignFormExpr____n_assign_op( self) /*ACallReassignExpr::_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*/) /*PAssignOp::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AReassignFormExpr____n_assign_op( self) /*ACallReassignExpr::_n_assign_op*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
+  break_746: while(0);
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AReassignFormExpr____n_assign_op(variable[0]) /*AReassignFormExpr::_n_assign_op*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AReassignFormExpr____n_assign_op(variable[0]) /*AReassignFormExpr::_n_assign_op*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
-  variable1 = ATTR_parser_nodes___AReassignFormExpr____n_value( self) /*ACallReassignExpr::_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*/) /*PExpr::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AReassignFormExpr____n_value( self) /*ACallReassignExpr::_n_value*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AReassignFormExpr____n_value(variable[0]) /*AReassignFormExpr::_n_value*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AReassignFormExpr____n_value(variable[0]) /*AReassignFormExpr::_n_value*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
+  return_label745: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___ASuperExpr___n_qualified__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::ASuperExpr::n_qualified= (src/parser//parser_prod.nit:8317,5--8321:20)"};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___ACallReassignExpr___empty_init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 8569, LOCATE_parser_prod___ACallReassignExpr___empty_init};
+  val_t variable[2];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  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*/) /*PQualified::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PQualified::parent=*/;
-  }
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ACallReassignExpr].i]) return;
+  /* Register variable[1]: Method return value and escape marker */
+  return_label747: while(false);
+  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ACallReassignExpr].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser_prod___ASuperExpr___n_kwsuper__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::ASuperExpr::n_kwsuper= (src/parser//parser_prod.nit:8324,5--8328:20)"};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  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*/) /*TKwsuper::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*TKwsuper::parent=*/;
-  }
+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, 8571, LOCATE_parser_prod___ACallReassignExpr___init_acallreassignexpr};
+  val_t variable[11];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Local variable */
+  variable[2] =  param1;
+  /* Register variable[3]: Local variable */
+  variable[3] =  param2;
+  /* Register variable[4]: Local variable */
+  variable[4] =  param3;
+  /* Register variable[5]: Local variable */
+  variable[5] =  param4;
+  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ACallReassignExpr].i]) return;
+  /* Register variable[6]: Method return value and escape marker */
+  CALL_parser_prod___ACallReassignExpr___empty_init(variable[0])(variable[0], init_table /*YYY*/) /*ACallReassignExpr::empty_init*/;
+  ATTR_parser_nodes___ASendExpr____n_expr(variable[0]) /*ASendExpr::_n_expr*/ =  variable[1] /*n_expr*/;
+  /* Register variable[7]: Result */
+  variable[7] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_expr*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_expr*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n_expr*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_expr*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n_expr*/)( variable[1] /*n_expr*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[7])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n_expr*/)( variable[1] /*n_expr*/, variable[0]) /*PNode::parent=*/;
+  }
+  ATTR_parser_nodes___ACallFormExpr____n_id(variable[0]) /*ACallFormExpr::_n_id*/ =  variable[2] /*n_id*/;
+  /* Register variable[7]: Result */
+  variable[7] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*n_id*/ ==  NIT_NULL /*null*/) || (( variable[2] /*n_id*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*n_id*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*n_id*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*n_id*/)( variable[2] /*n_id*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[7])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[2] /*n_id*/)( variable[2] /*n_id*/, variable[0]) /*PNode::parent=*/;
+  }
+  /* Register variable[7]: Result */
+  variable[7] = NEW_List_list___List___init() /*new List[PExpr]*/;
+  ATTR_parser_nodes___ACallFormExpr____n_args(variable[0]) /*ACallFormExpr::_n_args*/ = variable[7];
+  /* Register variable[7]: For iterator */
+  variable[7] = CALL_abstract_collection___Collection___iterator( variable[3] /*n_args*/)( variable[3] /*n_args*/) /*Collection::iterator*/;
+  while (true) { /*for*/
+    /* Register variable[8]: For 'is_ok' result */
+    variable[8] = CALL_abstract_collection___Iterator___is_ok(variable[7])(variable[7]) /*Iterator::is_ok*/;
+    if (!UNTAG_Bool(variable[8])) break; /*for*/
+    variable[8] = CALL_abstract_collection___Iterator___item(variable[7])(variable[7]) /*Iterator::item*/ /* Ensure var: For item*/;
+    /* Register variable[9]: Local variable */
+    variable[9] = variable[8];
+    /* Register variable[10]: Result */
+    variable[10] = TAG_Bool(( variable[9] /*n*/==NIT_NULL) || VAL_ISA( variable[9] /*n*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
+    if (!UNTAG_Bool(variable[10])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ACallReassignExpr___init_acallreassignexpr, LOCATE_parser_prod, 8590); nit_exit(1);}
+    /* Register variable[10]: Result */
+    variable[10] = ATTR_parser_nodes___ACallFormExpr____n_args(variable[0]) /*ACallFormExpr::_n_args*/;
+    CALL_abstract_collection___SimpleCollection___add(variable[10])(variable[10],  variable[9] /*n*/) /*IndexedCollection::add*/;
+    CALL_parser_prod___PNode___parent__eq( variable[9] /*n*/)( variable[9] /*n*/, variable[0]) /*PNode::parent=*/;
+    continue_749: while(0);
+    CALL_abstract_collection___Iterator___next(variable[7])(variable[7]) /*Iterator::next*/;
+  }
+  break_749: while(0);
+  ATTR_parser_nodes___AReassignFormExpr____n_assign_op(variable[0]) /*AReassignFormExpr::_n_assign_op*/ =  variable[4] /*n_assign_op*/;
+  /* Register variable[7]: Result */
+  variable[7] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[4] /*n_assign_op*/ ==  NIT_NULL /*null*/) || (( variable[4] /*n_assign_op*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[4] /*n_assign_op*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[4] /*n_assign_op*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[4] /*n_assign_op*/)( variable[4] /*n_assign_op*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[7])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[4] /*n_assign_op*/)( variable[4] /*n_assign_op*/, variable[0]) /*PNode::parent=*/;
+  }
+  ATTR_parser_nodes___AReassignFormExpr____n_value(variable[0]) /*AReassignFormExpr::_n_value*/ =  variable[5] /*n_value*/;
+  /* Register variable[7]: Result */
+  variable[7] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[5] /*n_value*/ ==  NIT_NULL /*null*/) || (( variable[5] /*n_value*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[5] /*n_value*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[5] /*n_value*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[5] /*n_value*/)( variable[5] /*n_value*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[7])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[5] /*n_value*/)( variable[5] /*n_value*/, variable[0]) /*PNode::parent=*/;
+  }
+  return_label748: while(false);
+  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ACallReassignExpr].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser_prod___ASuperExpr___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, "parser_prod::ASuperExpr::empty_init (src/parser//parser_prod.nit:8332,5--27)"};
+void parser_prod___ASuperExpr___n_qualified__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 8704, LOCATE_parser_prod___ASuperExpr___n_qualified__eq};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ASuperExpr].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ASuperExpr].i] = 1;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  ATTR_parser_nodes___ASuperExpr____n_qualified(variable[0]) /*ASuperExpr::_n_qualified*/ =  variable[1] /*n*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[0]) /*PNode::parent=*/;
+  }
+  return_label750: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___ASuperExpr___init_asuperexpr(val_t  self, val_t  param0, val_t  param1, val_t  param2, int* init_table) {
-  struct trace_t trace = {NULL, "parser_prod::ASuperExpr::init_asuperexpr (src/parser//parser_prod.nit:8334,5--8352:17)"};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  val_t variable3;
-    val_t variable4;
-    val_t variable5;
-  trace.prev = tracehead; tracehead = &trace;
-  variable0 =  param0;
-  variable1 =  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*/) /*PQualified::==*/)))))));
-  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) /*PQualified::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*/) /*TKwsuper::==*/)))))));
-  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) /*TKwsuper::parent=*/;
-  }
-  variable3 = NEW_list___List___init(); /*new List[PExpr]*/
-  ATTR_parser_nodes___ASuperExpr____n_args( self) /*ASuperExpr::_n_args*/ = variable3;
-  variable3 = ((array___AbstractArray___iterator_t)CALL( variable2 /*n_args*/,COLOR_abstract_collection___Collection___iterator))( variable2 /*n_args*/) /*Array::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 failed: src/parser//parser_prod.nit:8350,3--20\n"); 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*/) /*List::add*/;
-    ((parser_prod___PNode___parent__eq_t)CALL( variable4 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable4 /*n*/,  self) /*PExpr::parent=*/;
-    continue_719: while(0);
-    ((array___ArrayIterator___next_t)CALL(variable3,COLOR_abstract_collection___Iterator___next))(variable3) /*ArrayIterator::next*/;
+void parser_prod___ASuperExpr___n_kwsuper__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 8711, LOCATE_parser_prod___ASuperExpr___n_kwsuper__eq};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  ATTR_parser_nodes___ASuperExpr____n_kwsuper(variable[0]) /*ASuperExpr::_n_kwsuper*/ =  variable[1] /*n*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[0]) /*PNode::parent=*/;
   }
-  break_719: while(0);
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ASuperExpr].i] = 1;
+  return_label751: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___ASuperExpr___replace_child(val_t  self, val_t  param0, val_t  param1) {
-  struct trace_t trace = {NULL, "parser_prod::ASuperExpr::replace_child (src/parser//parser_prod.nit:8356,5--8388:22)"};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  val_t variable3;
-    val_t variable4;
-  trace.prev = tracehead; tracehead = &trace;
-  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*/) /*PNode::==*/)))))));
-  if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert failed: src/parser//parser_prod.nit:8358,9--32\n"); 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*/) /*PQualified::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*PNode::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_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 failed: src/parser//parser_prod.nit:8362,3--33\n"); 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_label720;
-  }
-  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*/) /*TKwsuper::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*PNode::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_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 failed: src/parser//parser_prod.nit:8372,3--31\n"); 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_label720;
-  }
-  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[Int]*/
-  variable2 = variable3;
-  variable2 = ((range___Range___iterator_t)CALL(variable2,COLOR_abstract_collection___Collection___iterator))(variable2) /*Range::iterator*/;
+  struct trace_t trace = {NULL, NULL, 8744, LOCATE_parser_prod___ASuperExpr___replace_child};
+  val_t variable[8];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Local variable */
+  variable[2] =  param1;
+  /* Register variable[3]: Method return value and escape marker */
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ASuperExpr___replace_child, LOCATE_parser_prod, 8746); nit_exit(1);}
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___ASuperExpr____n_qualified(variable[0]) /*ASuperExpr::_n_qualified*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*PNode::parent=*/;
+      /* Register variable[4]: Result */
+      variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PQualified, ID_PQualified)) /*cast PQualified*/;
+      if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ASuperExpr___replace_child, LOCATE_parser_prod, 8750); nit_exit(1);}
+      ATTR_parser_nodes___ASuperExpr____n_qualified(variable[0]) /*ASuperExpr::_n_qualified*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      ATTR_parser_nodes___ASuperExpr____n_qualified(variable[0]) /*ASuperExpr::_n_qualified*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label752;
+  }
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___ASuperExpr____n_kwsuper(variable[0]) /*ASuperExpr::_n_kwsuper*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*PNode::parent=*/;
+      /* Register variable[4]: Result */
+      variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_TKwsuper, ID_TKwsuper)) /*cast TKwsuper*/;
+      if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ASuperExpr___replace_child, LOCATE_parser_prod, 8760); nit_exit(1);}
+      ATTR_parser_nodes___ASuperExpr____n_kwsuper(variable[0]) /*ASuperExpr::_n_kwsuper*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      ATTR_parser_nodes___ASuperExpr____n_kwsuper(variable[0]) /*ASuperExpr::_n_kwsuper*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label752;
+  }
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___ASuperExpr____n_args(variable[0]) /*ASuperExpr::_n_args*/;
+  /* Register variable[4]: Result */
+  variable[4] = CALL_abstract_collection___Collection___length(variable[4])(variable[4]) /*List::length*/;
+  /* Register variable[4]: Result */
+  variable[4] = NEW_Range_range___Range___without_last( TAG_Int(0), variable[4]) /*new Range[Int]*/;
+  /* Register variable[4]: For iterator */
+  variable[4] = CALL_abstract_collection___Collection___iterator(variable[4])(variable[4]) /*Range::iterator*/;
   while (true) { /*for*/
-    variable3 = ((abstract_collection___Iterator___is_ok_t)CALL(variable2,COLOR_abstract_collection___Iterator___is_ok))(variable2) /*Iterator::is_ok*/;
-    if (!UNTAG_Bool(variable3)) break; /*for*/
-    variable3 = ((abstract_collection___Iterator___item_t)CALL(variable2,COLOR_abstract_collection___Iterator___item))(variable2) /*Iterator::item*/;
-    variable4 = ATTR_parser_nodes___ASuperExpr____n_args( self) /*ASuperExpr::_n_args*/;
-    variable4 = ((list___List_____bra_t)CALL(variable4,COLOR_abstract_collection___Map_____bra))(variable4,  variable3 /*i*/) /*List::[]*/;
-    variable4 = TAG_Bool((variable4 ==  variable0 /*old_child*/) || ((variable4 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable4,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable4, variable0 /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable4,COLOR_kernel___Object_____eqeq))(variable4,  variable0 /*old_child*/) /*PExpr::==*/)))));
-    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*/) /*PNode::==*/)))))));
-      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 failed: src/parser//parser_prod.nit:8382,7--32\n"); 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) /*PExpr::parent=*/;
+    /* Register variable[5]: For 'is_ok' result */
+    variable[5] = CALL_abstract_collection___Iterator___is_ok(variable[4])(variable[4]) /*Iterator::is_ok*/;
+    if (!UNTAG_Bool(variable[5])) break; /*for*/
+    variable[5] = CALL_abstract_collection___Iterator___item(variable[4])(variable[4]) /*Iterator::item*/ /* Ensure var: For item*/;
+    /* Register variable[6]: Local variable */
+    variable[6] = variable[5];
+    /* Register variable[7]: Result */
+    variable[7] = ATTR_parser_nodes___ASuperExpr____n_args(variable[0]) /*ASuperExpr::_n_args*/;
+    /* Register variable[7]: Result */
+    variable[7] = CALL_abstract_collection___MapRead_____bra(variable[7])(variable[7],  variable[6] /*i*/) /*List::[]*/;
+    /* Register variable[7]: Result */
+    variable[7] = TAG_Bool((variable[7] ==  variable[1] /*old_child*/) || ((variable[7] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[7])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[7], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[7])(variable[7],  variable[1] /*old_child*/) /*Object::==*/)))));
+    if (UNTAG_Bool(variable[7])) { /*if*/
+      /* Register variable[7]: Result */
+      variable[7] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+      if (UNTAG_Bool(variable[7])) { /*if*/
+        /* Register variable[7]: Result */
+        variable[7] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
+        if (!UNTAG_Bool(variable[7])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ASuperExpr___replace_child, LOCATE_parser_prod, 8770); nit_exit(1);}
+        /* Register variable[7]: Result */
+        variable[7] = ATTR_parser_nodes___ASuperExpr____n_args(variable[0]) /*ASuperExpr::_n_args*/;
+        CALL_abstract_collection___Map_____braeq(variable[7])(variable[7],  variable[6] /*i*/,  variable[2] /*new_child*/) /*List::[]=*/;
+        CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*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*/;
+        /* Register variable[7]: Result */
+        variable[7] = ATTR_parser_nodes___ASuperExpr____n_args(variable[0]) /*ASuperExpr::_n_args*/;
+        CALL_abstract_collection___Map___remove_at(variable[7])(variable[7],  variable[6] /*i*/) /*List::remove_at*/;
       }
-      goto return_label720;
+      goto return_label752;
     }
-    continue_721: while(0);
-    ((abstract_collection___Iterator___next_t)CALL(variable2,COLOR_abstract_collection___Iterator___next))(variable2) /*Iterator::next*/;
+    continue_753: while(0);
+    CALL_abstract_collection___Iterator___next(variable[4])(variable[4]) /*Iterator::next*/;
   }
-  break_721: while(0);
-  return_label720: while(false);
+  break_753: while(0);
+  return_label752: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___ASuperExpr___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::ASuperExpr::visit_all (src/parser//parser_prod.nit:8393,5--8402:25)"};
-  val_t variable0;
-  val_t variable1;
-    val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  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*/) /*PQualified::==*/)))))));
-  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*/) /*TKwsuper::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___ASuperExpr____n_kwsuper( self) /*ASuperExpr::_n_kwsuper*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
-  variable1 = ATTR_parser_nodes___ASuperExpr____n_args( self) /*ASuperExpr::_n_args*/;
-  variable1 = ((list___List___iterator_t)CALL(variable1,COLOR_abstract_collection___Collection___iterator))(variable1) /*List::iterator*/;
+  struct trace_t trace = {NULL, NULL, 8781, LOCATE_parser_prod___ASuperExpr___visit_all};
+  val_t variable[6];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___ASuperExpr____n_qualified(variable[0]) /*ASuperExpr::_n_qualified*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___ASuperExpr____n_qualified(variable[0]) /*ASuperExpr::_n_qualified*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___ASuperExpr____n_kwsuper(variable[0]) /*ASuperExpr::_n_kwsuper*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___ASuperExpr____n_kwsuper(variable[0]) /*ASuperExpr::_n_kwsuper*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___ASuperExpr____n_args(variable[0]) /*ASuperExpr::_n_args*/;
+  /* Register variable[3]: For iterator */
+  variable[3] = CALL_abstract_collection___Collection___iterator(variable[3])(variable[3]) /*List::iterator*/;
   while (true) { /*for*/
-    variable2 = ((list___ListIterator___is_ok_t)CALL(variable1,COLOR_abstract_collection___Iterator___is_ok))(variable1) /*ListIterator::is_ok*/;
-    if (!UNTAG_Bool(variable2)) break; /*for*/
-    variable2 = ((list___ListIterator___item_t)CALL(variable1,COLOR_abstract_collection___Iterator___item))(variable1) /*ListIterator::item*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/,  variable2 /*n*/) /*Visitor::visit*/;
-    continue_723: while(0);
-    ((list___ListIterator___next_t)CALL(variable1,COLOR_abstract_collection___Iterator___next))(variable1) /*ListIterator::next*/;
+    /* Register variable[4]: For 'is_ok' result */
+    variable[4] = CALL_abstract_collection___Iterator___is_ok(variable[3])(variable[3]) /*ListIterator::is_ok*/;
+    if (!UNTAG_Bool(variable[4])) break; /*for*/
+    variable[4] = CALL_abstract_collection___Iterator___item(variable[3])(variable[3]) /*ListIterator::item*/ /* Ensure var: For item*/;
+    /* Register variable[5]: Local variable */
+    variable[5] = variable[4];
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/,  variable[5] /*n*/) /*Visitor::visit*/;
+    continue_755: while(0);
+    CALL_abstract_collection___Iterator___next(variable[3])(variable[3]) /*ListIterator::next*/;
   }
-  break_723: while(0);
+  break_755: while(0);
+  return_label754: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___ASuperExpr___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::ASuperExpr::visit_all_reverse (src/parser//parser_prod.nit:8406,5--8418:11)"};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  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*/) /*PQualified::==*/)))))));
-  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*/) /*TKwsuper::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___ASuperExpr____n_kwsuper( self) /*ASuperExpr::_n_kwsuper*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
-  variable2 = ATTR_parser_nodes___ASuperExpr____n_args( self) /*ASuperExpr::_n_args*/;
-  variable2 = ((list___List___length_t)CALL(variable2,COLOR_abstract_collection___Collection___length))(variable2) /*List::length*/;
-  variable1 = variable2;
+  struct trace_t trace = {NULL, NULL, 8794, LOCATE_parser_prod___ASuperExpr___visit_all_reverse};
+  val_t variable[5];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___ASuperExpr____n_qualified(variable[0]) /*ASuperExpr::_n_qualified*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___ASuperExpr____n_qualified(variable[0]) /*ASuperExpr::_n_qualified*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___ASuperExpr____n_kwsuper(variable[0]) /*ASuperExpr::_n_kwsuper*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___ASuperExpr____n_kwsuper(variable[0]) /*ASuperExpr::_n_kwsuper*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Local variable */
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___ASuperExpr____n_args(variable[0]) /*ASuperExpr::_n_args*/;
+  /* Register variable[4]: Result */
+  variable[4] = CALL_abstract_collection___Collection___length(variable[4])(variable[4]) /*List::length*/;
+  variable[3] = variable[4];
   while (true) { /*while*/
-    variable2 = TAG_Bool(UNTAG_Int( variable1 /*i*/)>=UNTAG_Int( TAG_Int(0)));
-    if (!UNTAG_Bool(variable2)) break; /* while*/
-    variable2 = ATTR_parser_nodes___ASuperExpr____n_args( self) /*ASuperExpr::_n_args*/;
-    variable2 = ((list___List_____bra_t)CALL(variable2,COLOR_abstract_collection___Map_____bra))(variable2,  variable1 /*i*/) /*List::[]*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable2) /*Visitor::visit*/;
-    variable2 = TAG_Int(UNTAG_Int( variable1 /*i*/)-UNTAG_Int( TAG_Int(1)));
-    variable1 = variable2 /*i=*/;
-    continue_725: while(0);
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(UNTAG_Int( variable[3] /*i*/)>=UNTAG_Int( TAG_Int(0)));
+    if (!UNTAG_Bool(variable[4])) break; /* while*/
+    /* Register variable[4]: Result */
+    variable[4] = ATTR_parser_nodes___ASuperExpr____n_args(variable[0]) /*ASuperExpr::_n_args*/;
+    /* Register variable[4]: Result */
+    variable[4] = CALL_abstract_collection___MapRead_____bra(variable[4])(variable[4],  variable[3] /*i*/) /*List::[]*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[4]) /*Visitor::visit*/;
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Int(UNTAG_Int( variable[3] /*i*/)-UNTAG_Int( TAG_Int(1)));
+    variable[3] = variable[4] /*i=*/;
+    continue_757: while(0);
   }
-  break_725: while(0);
+  break_757: while(0);
+  return_label756: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AInitExpr___n_expr__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AInitExpr::n_expr= (src/parser//parser_prod.nit:8424,5--8428:20)"};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___ASuperExpr___empty_init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 8719, LOCATE_parser_prod___ASuperExpr___empty_init};
+  val_t variable[2];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  variable0 =  param0;
-  ATTR_parser_nodes___ASendExpr____n_expr( self) /*AInitExpr::_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*/) /*PExpr::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PExpr::parent=*/;
-  }
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ASuperExpr].i]) return;
+  /* Register variable[1]: Method return value and escape marker */
+  return_label758: while(false);
+  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ASuperExpr].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AInitExpr___n_kwinit__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AInitExpr::n_kwinit= (src/parser//parser_prod.nit:8431,5--8435:20)"};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  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*/) /*TKwinit::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*TKwinit::parent=*/;
-  }
+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, 8721, LOCATE_parser_prod___ASuperExpr___init_asuperexpr};
+  val_t variable[9];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Local variable */
+  variable[2] =  param1;
+  /* Register variable[3]: Local variable */
+  variable[3] =  param2;
+  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ASuperExpr].i]) return;
+  /* Register variable[4]: Method return value and escape marker */
+  CALL_parser_prod___ASuperExpr___empty_init(variable[0])(variable[0], init_table /*YYY*/) /*ASuperExpr::empty_init*/;
+  ATTR_parser_nodes___ASuperExpr____n_qualified(variable[0]) /*ASuperExpr::_n_qualified*/ =  variable[1] /*n_qualified*/;
+  /* Register variable[5]: Result */
+  variable[5] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_qualified*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_qualified*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n_qualified*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_qualified*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n_qualified*/)( variable[1] /*n_qualified*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[5])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n_qualified*/)( variable[1] /*n_qualified*/, variable[0]) /*PNode::parent=*/;
+  }
+  ATTR_parser_nodes___ASuperExpr____n_kwsuper(variable[0]) /*ASuperExpr::_n_kwsuper*/ =  variable[2] /*n_kwsuper*/;
+  /* Register variable[5]: Result */
+  variable[5] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*n_kwsuper*/ ==  NIT_NULL /*null*/) || (( variable[2] /*n_kwsuper*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*n_kwsuper*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*n_kwsuper*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*n_kwsuper*/)( variable[2] /*n_kwsuper*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[5])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[2] /*n_kwsuper*/)( variable[2] /*n_kwsuper*/, variable[0]) /*PNode::parent=*/;
+  }
+  /* Register variable[5]: Result */
+  variable[5] = NEW_List_list___List___init() /*new List[PExpr]*/;
+  ATTR_parser_nodes___ASuperExpr____n_args(variable[0]) /*ASuperExpr::_n_args*/ = variable[5];
+  /* Register variable[5]: For iterator */
+  variable[5] = CALL_abstract_collection___Collection___iterator( variable[3] /*n_args*/)( variable[3] /*n_args*/) /*Collection::iterator*/;
+  while (true) { /*for*/
+    /* Register variable[6]: For 'is_ok' result */
+    variable[6] = CALL_abstract_collection___Iterator___is_ok(variable[5])(variable[5]) /*Iterator::is_ok*/;
+    if (!UNTAG_Bool(variable[6])) break; /*for*/
+    variable[6] = CALL_abstract_collection___Iterator___item(variable[5])(variable[5]) /*Iterator::item*/ /* Ensure var: For item*/;
+    /* Register variable[7]: Local variable */
+    variable[7] = variable[6];
+    /* Register variable[8]: Result */
+    variable[8] = TAG_Bool(( variable[7] /*n*/==NIT_NULL) || VAL_ISA( variable[7] /*n*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
+    if (!UNTAG_Bool(variable[8])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ASuperExpr___init_asuperexpr, LOCATE_parser_prod, 8738); nit_exit(1);}
+    /* Register variable[8]: Result */
+    variable[8] = ATTR_parser_nodes___ASuperExpr____n_args(variable[0]) /*ASuperExpr::_n_args*/;
+    CALL_abstract_collection___SimpleCollection___add(variable[8])(variable[8],  variable[7] /*n*/) /*IndexedCollection::add*/;
+    CALL_parser_prod___PNode___parent__eq( variable[7] /*n*/)( variable[7] /*n*/, variable[0]) /*PNode::parent=*/;
+    continue_760: while(0);
+    CALL_abstract_collection___Iterator___next(variable[5])(variable[5]) /*Iterator::next*/;
+  }
+  break_760: while(0);
+  return_label759: while(false);
+  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ASuperExpr].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AInitExpr___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, "parser_prod::AInitExpr::empty_init (src/parser//parser_prod.nit:8439,5--27)"};
+void parser_prod___AInitExpr___n_expr__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 8812, LOCATE_parser_prod___AInitExpr___n_expr__eq};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  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;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  ATTR_parser_nodes___ASendExpr____n_expr(variable[0]) /*ASendExpr::_n_expr*/ =  variable[1] /*n*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[0]) /*PNode::parent=*/;
+  }
+  return_label761: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AInitExpr___init_ainitexpr(val_t  self, val_t  param0, val_t  param1, val_t  param2, int* init_table) {
-  struct trace_t trace = {NULL, "parser_prod::AInitExpr::init_ainitexpr (src/parser//parser_prod.nit:8441,5--8459:17)"};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  val_t variable3;
-    val_t variable4;
-    val_t variable5;
-  trace.prev = tracehead; tracehead = &trace;
-  variable0 =  param0;
-  variable1 =  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) /*AInitExpr::_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*/) /*PExpr::==*/)))))));
-  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) /*PExpr::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*/) /*TKwinit::==*/)))))));
-  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) /*TKwinit::parent=*/;
-  }
-  variable3 = NEW_list___List___init(); /*new List[PExpr]*/
-  ATTR_parser_nodes___AInitExpr____n_args( self) /*AInitExpr::_n_args*/ = variable3;
-  variable3 = ((array___AbstractArray___iterator_t)CALL( variable2 /*n_args*/,COLOR_abstract_collection___Collection___iterator))( variable2 /*n_args*/) /*Array::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 failed: src/parser//parser_prod.nit:8457,3--20\n"); 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*/) /*List::add*/;
-    ((parser_prod___PNode___parent__eq_t)CALL( variable4 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable4 /*n*/,  self) /*PExpr::parent=*/;
-    continue_730: while(0);
-    ((array___ArrayIterator___next_t)CALL(variable3,COLOR_abstract_collection___Iterator___next))(variable3) /*ArrayIterator::next*/;
+void parser_prod___AInitExpr___n_kwinit__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 8819, LOCATE_parser_prod___AInitExpr___n_kwinit__eq};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  ATTR_parser_nodes___AInitExpr____n_kwinit(variable[0]) /*AInitExpr::_n_kwinit*/ =  variable[1] /*n*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[0]) /*PNode::parent=*/;
   }
-  break_730: while(0);
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AInitExpr].i] = 1;
+  return_label762: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AInitExpr___replace_child(val_t  self, val_t  param0, val_t  param1) {
-  struct trace_t trace = {NULL, "parser_prod::AInitExpr::replace_child (src/parser//parser_prod.nit:8463,5--8495:22)"};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  val_t variable3;
-    val_t variable4;
-  trace.prev = tracehead; tracehead = &trace;
-  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*/) /*PNode::==*/)))))));
-  if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert failed: src/parser//parser_prod.nit:8465,9--32\n"); nit_exit(1);}
-  variable2 = ATTR_parser_nodes___ASendExpr____n_expr( self) /*AInitExpr::_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*/) /*PExpr::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*PNode::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_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 failed: src/parser//parser_prod.nit:8469,3--28\n"); nit_exit(1);}
-      ATTR_parser_nodes___ASendExpr____n_expr( self) /*AInitExpr::_n_expr*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___ASendExpr____n_expr( self) /*AInitExpr::_n_expr*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label731;
-  }
-  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*/) /*TKwinit::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*PNode::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_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 failed: src/parser//parser_prod.nit:8479,3--30\n"); 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_label731;
-  }
-  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[Int]*/
-  variable2 = variable3;
-  variable2 = ((range___Range___iterator_t)CALL(variable2,COLOR_abstract_collection___Collection___iterator))(variable2) /*Range::iterator*/;
+  struct trace_t trace = {NULL, NULL, 8852, LOCATE_parser_prod___AInitExpr___replace_child};
+  val_t variable[8];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Local variable */
+  variable[2] =  param1;
+  /* Register variable[3]: Method return value and escape marker */
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AInitExpr___replace_child, LOCATE_parser_prod, 8854); nit_exit(1);}
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___ASendExpr____n_expr(variable[0]) /*ASendExpr::_n_expr*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*PNode::parent=*/;
+      /* Register variable[4]: Result */
+      variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
+      if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AInitExpr___replace_child, LOCATE_parser_prod, 8858); nit_exit(1);}
+      ATTR_parser_nodes___ASendExpr____n_expr(variable[0]) /*ASendExpr::_n_expr*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      ATTR_parser_nodes___ASendExpr____n_expr(variable[0]) /*ASendExpr::_n_expr*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label763;
+  }
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___AInitExpr____n_kwinit(variable[0]) /*AInitExpr::_n_kwinit*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*PNode::parent=*/;
+      /* Register variable[4]: Result */
+      variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_TKwinit, ID_TKwinit)) /*cast TKwinit*/;
+      if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AInitExpr___replace_child, LOCATE_parser_prod, 8868); nit_exit(1);}
+      ATTR_parser_nodes___AInitExpr____n_kwinit(variable[0]) /*AInitExpr::_n_kwinit*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      ATTR_parser_nodes___AInitExpr____n_kwinit(variable[0]) /*AInitExpr::_n_kwinit*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label763;
+  }
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___AInitExpr____n_args(variable[0]) /*AInitExpr::_n_args*/;
+  /* Register variable[4]: Result */
+  variable[4] = CALL_abstract_collection___Collection___length(variable[4])(variable[4]) /*List::length*/;
+  /* Register variable[4]: Result */
+  variable[4] = NEW_Range_range___Range___without_last( TAG_Int(0), variable[4]) /*new Range[Int]*/;
+  /* Register variable[4]: For iterator */
+  variable[4] = CALL_abstract_collection___Collection___iterator(variable[4])(variable[4]) /*Range::iterator*/;
   while (true) { /*for*/
-    variable3 = ((abstract_collection___Iterator___is_ok_t)CALL(variable2,COLOR_abstract_collection___Iterator___is_ok))(variable2) /*Iterator::is_ok*/;
-    if (!UNTAG_Bool(variable3)) break; /*for*/
-    variable3 = ((abstract_collection___Iterator___item_t)CALL(variable2,COLOR_abstract_collection___Iterator___item))(variable2) /*Iterator::item*/;
-    variable4 = ATTR_parser_nodes___AInitExpr____n_args( self) /*AInitExpr::_n_args*/;
-    variable4 = ((list___List_____bra_t)CALL(variable4,COLOR_abstract_collection___Map_____bra))(variable4,  variable3 /*i*/) /*List::[]*/;
-    variable4 = TAG_Bool((variable4 ==  variable0 /*old_child*/) || ((variable4 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable4,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable4, variable0 /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable4,COLOR_kernel___Object_____eqeq))(variable4,  variable0 /*old_child*/) /*PExpr::==*/)))));
-    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*/) /*PNode::==*/)))))));
-      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 failed: src/parser//parser_prod.nit:8489,7--32\n"); 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) /*PExpr::parent=*/;
+    /* Register variable[5]: For 'is_ok' result */
+    variable[5] = CALL_abstract_collection___Iterator___is_ok(variable[4])(variable[4]) /*Iterator::is_ok*/;
+    if (!UNTAG_Bool(variable[5])) break; /*for*/
+    variable[5] = CALL_abstract_collection___Iterator___item(variable[4])(variable[4]) /*Iterator::item*/ /* Ensure var: For item*/;
+    /* Register variable[6]: Local variable */
+    variable[6] = variable[5];
+    /* Register variable[7]: Result */
+    variable[7] = ATTR_parser_nodes___AInitExpr____n_args(variable[0]) /*AInitExpr::_n_args*/;
+    /* Register variable[7]: Result */
+    variable[7] = CALL_abstract_collection___MapRead_____bra(variable[7])(variable[7],  variable[6] /*i*/) /*List::[]*/;
+    /* Register variable[7]: Result */
+    variable[7] = TAG_Bool((variable[7] ==  variable[1] /*old_child*/) || ((variable[7] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[7])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[7], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[7])(variable[7],  variable[1] /*old_child*/) /*Object::==*/)))));
+    if (UNTAG_Bool(variable[7])) { /*if*/
+      /* Register variable[7]: Result */
+      variable[7] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+      if (UNTAG_Bool(variable[7])) { /*if*/
+        /* Register variable[7]: Result */
+        variable[7] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
+        if (!UNTAG_Bool(variable[7])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AInitExpr___replace_child, LOCATE_parser_prod, 8878); nit_exit(1);}
+        /* Register variable[7]: Result */
+        variable[7] = ATTR_parser_nodes___AInitExpr____n_args(variable[0]) /*AInitExpr::_n_args*/;
+        CALL_abstract_collection___Map_____braeq(variable[7])(variable[7],  variable[6] /*i*/,  variable[2] /*new_child*/) /*List::[]=*/;
+        CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*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*/;
+        /* Register variable[7]: Result */
+        variable[7] = ATTR_parser_nodes___AInitExpr____n_args(variable[0]) /*AInitExpr::_n_args*/;
+        CALL_abstract_collection___Map___remove_at(variable[7])(variable[7],  variable[6] /*i*/) /*List::remove_at*/;
       }
-      goto return_label731;
+      goto return_label763;
     }
-    continue_732: while(0);
-    ((abstract_collection___Iterator___next_t)CALL(variable2,COLOR_abstract_collection___Iterator___next))(variable2) /*Iterator::next*/;
+    continue_764: while(0);
+    CALL_abstract_collection___Iterator___next(variable[4])(variable[4]) /*Iterator::next*/;
   }
-  break_732: while(0);
-  return_label731: while(false);
+  break_764: while(0);
+  return_label763: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AInitExpr___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AInitExpr::visit_all (src/parser//parser_prod.nit:8500,5--8509:25)"};
-  val_t variable0;
-  val_t variable1;
-    val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___ASendExpr____n_expr( self) /*AInitExpr::_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*/) /*PExpr::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___ASendExpr____n_expr( self) /*AInitExpr::_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*/) /*TKwinit::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AInitExpr____n_kwinit( self) /*AInitExpr::_n_kwinit*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
-  variable1 = ATTR_parser_nodes___AInitExpr____n_args( self) /*AInitExpr::_n_args*/;
-  variable1 = ((list___List___iterator_t)CALL(variable1,COLOR_abstract_collection___Collection___iterator))(variable1) /*List::iterator*/;
+  struct trace_t trace = {NULL, NULL, 8889, LOCATE_parser_prod___AInitExpr___visit_all};
+  val_t variable[6];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___ASendExpr____n_expr(variable[0]) /*ASendExpr::_n_expr*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___ASendExpr____n_expr(variable[0]) /*ASendExpr::_n_expr*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AInitExpr____n_kwinit(variable[0]) /*AInitExpr::_n_kwinit*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AInitExpr____n_kwinit(variable[0]) /*AInitExpr::_n_kwinit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AInitExpr____n_args(variable[0]) /*AInitExpr::_n_args*/;
+  /* Register variable[3]: For iterator */
+  variable[3] = CALL_abstract_collection___Collection___iterator(variable[3])(variable[3]) /*List::iterator*/;
   while (true) { /*for*/
-    variable2 = ((list___ListIterator___is_ok_t)CALL(variable1,COLOR_abstract_collection___Iterator___is_ok))(variable1) /*ListIterator::is_ok*/;
-    if (!UNTAG_Bool(variable2)) break; /*for*/
-    variable2 = ((list___ListIterator___item_t)CALL(variable1,COLOR_abstract_collection___Iterator___item))(variable1) /*ListIterator::item*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/,  variable2 /*n*/) /*Visitor::visit*/;
-    continue_734: while(0);
-    ((list___ListIterator___next_t)CALL(variable1,COLOR_abstract_collection___Iterator___next))(variable1) /*ListIterator::next*/;
+    /* Register variable[4]: For 'is_ok' result */
+    variable[4] = CALL_abstract_collection___Iterator___is_ok(variable[3])(variable[3]) /*ListIterator::is_ok*/;
+    if (!UNTAG_Bool(variable[4])) break; /*for*/
+    variable[4] = CALL_abstract_collection___Iterator___item(variable[3])(variable[3]) /*ListIterator::item*/ /* Ensure var: For item*/;
+    /* Register variable[5]: Local variable */
+    variable[5] = variable[4];
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/,  variable[5] /*n*/) /*Visitor::visit*/;
+    continue_766: while(0);
+    CALL_abstract_collection___Iterator___next(variable[3])(variable[3]) /*ListIterator::next*/;
   }
-  break_734: while(0);
+  break_766: while(0);
+  return_label765: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AInitExpr___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AInitExpr::visit_all_reverse (src/parser//parser_prod.nit:8513,5--8525:11)"};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___ASendExpr____n_expr( self) /*AInitExpr::_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*/) /*PExpr::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___ASendExpr____n_expr( self) /*AInitExpr::_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*/) /*TKwinit::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AInitExpr____n_kwinit( self) /*AInitExpr::_n_kwinit*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
-  variable2 = ATTR_parser_nodes___AInitExpr____n_args( self) /*AInitExpr::_n_args*/;
-  variable2 = ((list___List___length_t)CALL(variable2,COLOR_abstract_collection___Collection___length))(variable2) /*List::length*/;
-  variable1 = variable2;
+  struct trace_t trace = {NULL, NULL, 8902, LOCATE_parser_prod___AInitExpr___visit_all_reverse};
+  val_t variable[5];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___ASendExpr____n_expr(variable[0]) /*ASendExpr::_n_expr*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___ASendExpr____n_expr(variable[0]) /*ASendExpr::_n_expr*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AInitExpr____n_kwinit(variable[0]) /*AInitExpr::_n_kwinit*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AInitExpr____n_kwinit(variable[0]) /*AInitExpr::_n_kwinit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Local variable */
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___AInitExpr____n_args(variable[0]) /*AInitExpr::_n_args*/;
+  /* Register variable[4]: Result */
+  variable[4] = CALL_abstract_collection___Collection___length(variable[4])(variable[4]) /*List::length*/;
+  variable[3] = variable[4];
   while (true) { /*while*/
-    variable2 = TAG_Bool(UNTAG_Int( variable1 /*i*/)>=UNTAG_Int( TAG_Int(0)));
-    if (!UNTAG_Bool(variable2)) break; /* while*/
-    variable2 = ATTR_parser_nodes___AInitExpr____n_args( self) /*AInitExpr::_n_args*/;
-    variable2 = ((list___List_____bra_t)CALL(variable2,COLOR_abstract_collection___Map_____bra))(variable2,  variable1 /*i*/) /*List::[]*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable2) /*Visitor::visit*/;
-    variable2 = TAG_Int(UNTAG_Int( variable1 /*i*/)-UNTAG_Int( TAG_Int(1)));
-    variable1 = variable2 /*i=*/;
-    continue_736: while(0);
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(UNTAG_Int( variable[3] /*i*/)>=UNTAG_Int( TAG_Int(0)));
+    if (!UNTAG_Bool(variable[4])) break; /* while*/
+    /* Register variable[4]: Result */
+    variable[4] = ATTR_parser_nodes___AInitExpr____n_args(variable[0]) /*AInitExpr::_n_args*/;
+    /* Register variable[4]: Result */
+    variable[4] = CALL_abstract_collection___MapRead_____bra(variable[4])(variable[4],  variable[3] /*i*/) /*List::[]*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[4]) /*Visitor::visit*/;
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Int(UNTAG_Int( variable[3] /*i*/)-UNTAG_Int( TAG_Int(1)));
+    variable[3] = variable[4] /*i=*/;
+    continue_768: while(0);
   }
-  break_736: while(0);
+  break_768: while(0);
+  return_label767: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___ABraExpr___n_expr__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::ABraExpr::n_expr= (src/parser//parser_prod.nit:8531,5--8535:20)"};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___AInitExpr___empty_init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 8827, LOCATE_parser_prod___AInitExpr___empty_init};
+  val_t variable[2];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  variable0 =  param0;
-  ATTR_parser_nodes___ASendExpr____n_expr( self) /*ABraExpr::_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*/) /*PExpr::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PExpr::parent=*/;
-  }
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AInitExpr].i]) return;
+  /* Register variable[1]: Method return value and escape marker */
+  return_label769: while(false);
+  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AInitExpr].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser_prod___ABraExpr___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, "parser_prod::ABraExpr::empty_init (src/parser//parser_prod.nit:8539,5--27)"};
-  trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ABraExpr].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ABraExpr].i] = 1;
+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, 8829, LOCATE_parser_prod___AInitExpr___init_ainitexpr};
+  val_t variable[9];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Local variable */
+  variable[2] =  param1;
+  /* Register variable[3]: Local variable */
+  variable[3] =  param2;
+  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AInitExpr].i]) return;
+  /* Register variable[4]: Method return value and escape marker */
+  CALL_parser_prod___AInitExpr___empty_init(variable[0])(variable[0], init_table /*YYY*/) /*AInitExpr::empty_init*/;
+  ATTR_parser_nodes___ASendExpr____n_expr(variable[0]) /*ASendExpr::_n_expr*/ =  variable[1] /*n_expr*/;
+  /* Register variable[5]: Result */
+  variable[5] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_expr*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_expr*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n_expr*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_expr*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n_expr*/)( variable[1] /*n_expr*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[5])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n_expr*/)( variable[1] /*n_expr*/, variable[0]) /*PNode::parent=*/;
+  }
+  ATTR_parser_nodes___AInitExpr____n_kwinit(variable[0]) /*AInitExpr::_n_kwinit*/ =  variable[2] /*n_kwinit*/;
+  /* Register variable[5]: Result */
+  variable[5] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*n_kwinit*/ ==  NIT_NULL /*null*/) || (( variable[2] /*n_kwinit*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*n_kwinit*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*n_kwinit*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*n_kwinit*/)( variable[2] /*n_kwinit*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[5])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[2] /*n_kwinit*/)( variable[2] /*n_kwinit*/, variable[0]) /*PNode::parent=*/;
+  }
+  /* Register variable[5]: Result */
+  variable[5] = NEW_List_list___List___init() /*new List[PExpr]*/;
+  ATTR_parser_nodes___AInitExpr____n_args(variable[0]) /*AInitExpr::_n_args*/ = variable[5];
+  /* Register variable[5]: For iterator */
+  variable[5] = CALL_abstract_collection___Collection___iterator( variable[3] /*n_args*/)( variable[3] /*n_args*/) /*Collection::iterator*/;
+  while (true) { /*for*/
+    /* Register variable[6]: For 'is_ok' result */
+    variable[6] = CALL_abstract_collection___Iterator___is_ok(variable[5])(variable[5]) /*Iterator::is_ok*/;
+    if (!UNTAG_Bool(variable[6])) break; /*for*/
+    variable[6] = CALL_abstract_collection___Iterator___item(variable[5])(variable[5]) /*Iterator::item*/ /* Ensure var: For item*/;
+    /* Register variable[7]: Local variable */
+    variable[7] = variable[6];
+    /* Register variable[8]: Result */
+    variable[8] = TAG_Bool(( variable[7] /*n*/==NIT_NULL) || VAL_ISA( variable[7] /*n*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
+    if (!UNTAG_Bool(variable[8])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AInitExpr___init_ainitexpr, LOCATE_parser_prod, 8846); nit_exit(1);}
+    /* Register variable[8]: Result */
+    variable[8] = ATTR_parser_nodes___AInitExpr____n_args(variable[0]) /*AInitExpr::_n_args*/;
+    CALL_abstract_collection___SimpleCollection___add(variable[8])(variable[8],  variable[7] /*n*/) /*IndexedCollection::add*/;
+    CALL_parser_prod___PNode___parent__eq( variable[7] /*n*/)( variable[7] /*n*/, variable[0]) /*PNode::parent=*/;
+    continue_771: while(0);
+    CALL_abstract_collection___Iterator___next(variable[5])(variable[5]) /*Iterator::next*/;
+  }
+  break_771: while(0);
+  return_label770: while(false);
+  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AInitExpr].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser_prod___ABraExpr___init_abraexpr(val_t  self, val_t  param0, val_t  param1, int* init_table) {
-  struct trace_t trace = {NULL, "parser_prod::ABraExpr::init_abraexpr (src/parser//parser_prod.nit:8541,5--8554:17)"};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-    val_t variable3;
-    val_t variable4;
+void parser_prod___ABraExpr___n_expr__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 8920, LOCATE_parser_prod___ABraExpr___n_expr__eq};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  variable0 =  param0;
-  variable1 =  param1;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ABraExpr].i]) return;
-  ATTR_parser_nodes___ASendExpr____n_expr( self) /*ABraExpr::_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*/) /*PExpr::==*/)))))));
-  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) /*PExpr::parent=*/;
-  }
-  variable2 = NEW_list___List___init(); /*new List[PExpr]*/
-  ATTR_parser_nodes___ABraFormExpr____n_args( self) /*ABraExpr::_n_args*/ = variable2;
-  variable2 = ((array___AbstractArray___iterator_t)CALL( variable1 /*n_args*/,COLOR_abstract_collection___Collection___iterator))( variable1 /*n_args*/) /*Array::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 failed: src/parser//parser_prod.nit:8552,3--20\n"); nit_exit(1);}
-    variable4 = ATTR_parser_nodes___ABraFormExpr____n_args( self) /*ABraExpr::_n_args*/;
-    ((abstract_collection___IndexedCollection___add_t)CALL(variable4,COLOR_abstract_collection___SimpleCollection___add))(variable4,  variable3 /*n*/) /*List::add*/;
-    ((parser_prod___PNode___parent__eq_t)CALL( variable3 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable3 /*n*/,  self) /*PExpr::parent=*/;
-    continue_740: while(0);
-    ((array___ArrayIterator___next_t)CALL(variable2,COLOR_abstract_collection___Iterator___next))(variable2) /*ArrayIterator::next*/;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  ATTR_parser_nodes___ASendExpr____n_expr(variable[0]) /*ASendExpr::_n_expr*/ =  variable[1] /*n*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[0]) /*PNode::parent=*/;
   }
-  break_740: while(0);
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ABraExpr].i] = 1;
+  return_label772: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___ABraExpr___replace_child(val_t  self, val_t  param0, val_t  param1) {
-  struct trace_t trace = {NULL, "parser_prod::ABraExpr::replace_child (src/parser//parser_prod.nit:8558,5--8580:22)"};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  val_t variable3;
-    val_t variable4;
-  trace.prev = tracehead; tracehead = &trace;
-  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*/) /*PNode::==*/)))))));
-  if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert failed: src/parser//parser_prod.nit:8560,9--32\n"); nit_exit(1);}
-  variable2 = ATTR_parser_nodes___ASendExpr____n_expr( self) /*ABraExpr::_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*/) /*PExpr::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*PNode::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_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 failed: src/parser//parser_prod.nit:8564,3--28\n"); nit_exit(1);}
-      ATTR_parser_nodes___ASendExpr____n_expr( self) /*ABraExpr::_n_expr*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___ASendExpr____n_expr( self) /*ABraExpr::_n_expr*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label741;
-  }
-  variable2 = ATTR_parser_nodes___ABraFormExpr____n_args( self) /*ABraExpr::_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[Int]*/
-  variable2 = variable3;
-  variable2 = ((range___Range___iterator_t)CALL(variable2,COLOR_abstract_collection___Collection___iterator))(variable2) /*Range::iterator*/;
+  struct trace_t trace = {NULL, NULL, 8955, LOCATE_parser_prod___ABraExpr___replace_child};
+  val_t variable[8];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Local variable */
+  variable[2] =  param1;
+  /* Register variable[3]: Method return value and escape marker */
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ABraExpr___replace_child, LOCATE_parser_prod, 8957); nit_exit(1);}
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___ASendExpr____n_expr(variable[0]) /*ASendExpr::_n_expr*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*PNode::parent=*/;
+      /* Register variable[4]: Result */
+      variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
+      if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ABraExpr___replace_child, LOCATE_parser_prod, 8961); nit_exit(1);}
+      ATTR_parser_nodes___ASendExpr____n_expr(variable[0]) /*ASendExpr::_n_expr*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      ATTR_parser_nodes___ASendExpr____n_expr(variable[0]) /*ASendExpr::_n_expr*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label773;
+  }
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___ABraFormExpr____n_args(variable[0]) /*ABraFormExpr::_n_args*/;
+  /* Register variable[4]: Result */
+  variable[4] = CALL_abstract_collection___Collection___length(variable[4])(variable[4]) /*List::length*/;
+  /* Register variable[4]: Result */
+  variable[4] = NEW_Range_range___Range___without_last( TAG_Int(0), variable[4]) /*new Range[Int]*/;
+  /* Register variable[4]: For iterator */
+  variable[4] = CALL_abstract_collection___Collection___iterator(variable[4])(variable[4]) /*Range::iterator*/;
   while (true) { /*for*/
-    variable3 = ((abstract_collection___Iterator___is_ok_t)CALL(variable2,COLOR_abstract_collection___Iterator___is_ok))(variable2) /*Iterator::is_ok*/;
-    if (!UNTAG_Bool(variable3)) break; /*for*/
-    variable3 = ((abstract_collection___Iterator___item_t)CALL(variable2,COLOR_abstract_collection___Iterator___item))(variable2) /*Iterator::item*/;
-    variable4 = ATTR_parser_nodes___ABraFormExpr____n_args( self) /*ABraExpr::_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*/) /*PExpr::==*/)))));
-    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*/) /*PNode::==*/)))))));
-      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 failed: src/parser//parser_prod.nit:8574,7--32\n"); nit_exit(1);}
-        variable4 = ATTR_parser_nodes___ABraFormExpr____n_args( self) /*ABraExpr::_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) /*PExpr::parent=*/;
+    /* Register variable[5]: For 'is_ok' result */
+    variable[5] = CALL_abstract_collection___Iterator___is_ok(variable[4])(variable[4]) /*Iterator::is_ok*/;
+    if (!UNTAG_Bool(variable[5])) break; /*for*/
+    variable[5] = CALL_abstract_collection___Iterator___item(variable[4])(variable[4]) /*Iterator::item*/ /* Ensure var: For item*/;
+    /* Register variable[6]: Local variable */
+    variable[6] = variable[5];
+    /* Register variable[7]: Result */
+    variable[7] = ATTR_parser_nodes___ABraFormExpr____n_args(variable[0]) /*ABraFormExpr::_n_args*/;
+    /* Register variable[7]: Result */
+    variable[7] = CALL_abstract_collection___MapRead_____bra(variable[7])(variable[7],  variable[6] /*i*/) /*List::[]*/;
+    /* Register variable[7]: Result */
+    variable[7] = TAG_Bool((variable[7] ==  variable[1] /*old_child*/) || ((variable[7] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[7])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[7], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[7])(variable[7],  variable[1] /*old_child*/) /*Object::==*/)))));
+    if (UNTAG_Bool(variable[7])) { /*if*/
+      /* Register variable[7]: Result */
+      variable[7] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+      if (UNTAG_Bool(variable[7])) { /*if*/
+        /* Register variable[7]: Result */
+        variable[7] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
+        if (!UNTAG_Bool(variable[7])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ABraExpr___replace_child, LOCATE_parser_prod, 8971); nit_exit(1);}
+        /* Register variable[7]: Result */
+        variable[7] = ATTR_parser_nodes___ABraFormExpr____n_args(variable[0]) /*ABraFormExpr::_n_args*/;
+        CALL_abstract_collection___Map_____braeq(variable[7])(variable[7],  variable[6] /*i*/,  variable[2] /*new_child*/) /*List::[]=*/;
+        CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*PNode::parent=*/;
       } else { /*if*/
-        variable4 = ATTR_parser_nodes___ABraFormExpr____n_args( self) /*ABraExpr::_n_args*/;
-        ((list___List___remove_at_t)CALL(variable4,COLOR_abstract_collection___Map___remove_at))(variable4,  variable3 /*i*/) /*List::remove_at*/;
+        /* Register variable[7]: Result */
+        variable[7] = ATTR_parser_nodes___ABraFormExpr____n_args(variable[0]) /*ABraFormExpr::_n_args*/;
+        CALL_abstract_collection___Map___remove_at(variable[7])(variable[7],  variable[6] /*i*/) /*List::remove_at*/;
       }
-      goto return_label741;
+      goto return_label773;
+    }
+    continue_774: while(0);
+    CALL_abstract_collection___Iterator___next(variable[4])(variable[4]) /*Iterator::next*/;
+  }
+  break_774: while(0);
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___ASendExpr____n_closure_defs(variable[0]) /*ASendExpr::_n_closure_defs*/;
+  /* Register variable[4]: Result */
+  variable[4] = CALL_abstract_collection___Collection___length(variable[4])(variable[4]) /*List::length*/;
+  /* Register variable[4]: Result */
+  variable[4] = NEW_Range_range___Range___without_last( TAG_Int(0), variable[4]) /*new Range[Int]*/;
+  /* Register variable[4]: For iterator */
+  variable[4] = CALL_abstract_collection___Collection___iterator(variable[4])(variable[4]) /*Range::iterator*/;
+  while (true) { /*for*/
+    /* Register variable[5]: For 'is_ok' result */
+    variable[5] = CALL_abstract_collection___Iterator___is_ok(variable[4])(variable[4]) /*Iterator::is_ok*/;
+    if (!UNTAG_Bool(variable[5])) break; /*for*/
+    variable[5] = CALL_abstract_collection___Iterator___item(variable[4])(variable[4]) /*Iterator::item*/ /* Ensure var: For item*/;
+    /* Register variable[6]: Local variable */
+    variable[6] = variable[5];
+    /* Register variable[7]: Result */
+    variable[7] = ATTR_parser_nodes___ASendExpr____n_closure_defs(variable[0]) /*ASendExpr::_n_closure_defs*/;
+    /* Register variable[7]: Result */
+    variable[7] = CALL_abstract_collection___MapRead_____bra(variable[7])(variable[7],  variable[6] /*i*/) /*List::[]*/;
+    /* Register variable[7]: Result */
+    variable[7] = TAG_Bool((variable[7] ==  variable[1] /*old_child*/) || ((variable[7] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[7])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[7], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[7])(variable[7],  variable[1] /*old_child*/) /*Object::==*/)))));
+    if (UNTAG_Bool(variable[7])) { /*if*/
+      /* Register variable[7]: Result */
+      variable[7] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+      if (UNTAG_Bool(variable[7])) { /*if*/
+        /* Register variable[7]: Result */
+        variable[7] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PClosureDef, ID_PClosureDef)) /*cast PClosureDef*/;
+        if (!UNTAG_Bool(variable[7])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ABraExpr___replace_child, LOCATE_parser_prod, 8983); nit_exit(1);}
+        /* Register variable[7]: Result */
+        variable[7] = ATTR_parser_nodes___ASendExpr____n_closure_defs(variable[0]) /*ASendExpr::_n_closure_defs*/;
+        CALL_abstract_collection___Map_____braeq(variable[7])(variable[7],  variable[6] /*i*/,  variable[2] /*new_child*/) /*List::[]=*/;
+        CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*PNode::parent=*/;
+      } else { /*if*/
+        /* Register variable[7]: Result */
+        variable[7] = ATTR_parser_nodes___ASendExpr____n_closure_defs(variable[0]) /*ASendExpr::_n_closure_defs*/;
+        CALL_abstract_collection___Map___remove_at(variable[7])(variable[7],  variable[6] /*i*/) /*List::remove_at*/;
+      }
+      goto return_label773;
     }
-    continue_742: while(0);
-    ((abstract_collection___Iterator___next_t)CALL(variable2,COLOR_abstract_collection___Iterator___next))(variable2) /*Iterator::next*/;
+    continue_775: while(0);
+    CALL_abstract_collection___Iterator___next(variable[4])(variable[4]) /*Iterator::next*/;
   }
-  break_742: while(0);
-  return_label741: while(false);
+  break_775: while(0);
+  return_label773: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___ABraExpr___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::ABraExpr::visit_all (src/parser//parser_prod.nit:8585,5--8591:25)"};
-  val_t variable0;
-  val_t variable1;
-    val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___ASendExpr____n_expr( self) /*ABraExpr::_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*/) /*PExpr::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___ASendExpr____n_expr( self) /*ABraExpr::_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) /*ABraExpr::_n_args*/;
-  variable1 = ((list___List___iterator_t)CALL(variable1,COLOR_abstract_collection___Collection___iterator))(variable1) /*List::iterator*/;
+  struct trace_t trace = {NULL, NULL, 8994, LOCATE_parser_prod___ABraExpr___visit_all};
+  val_t variable[6];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___ASendExpr____n_expr(variable[0]) /*ASendExpr::_n_expr*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___ASendExpr____n_expr(variable[0]) /*ASendExpr::_n_expr*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___ABraFormExpr____n_args(variable[0]) /*ABraFormExpr::_n_args*/;
+  /* Register variable[3]: For iterator */
+  variable[3] = CALL_abstract_collection___Collection___iterator(variable[3])(variable[3]) /*List::iterator*/;
   while (true) { /*for*/
-    variable2 = ((list___ListIterator___is_ok_t)CALL(variable1,COLOR_abstract_collection___Iterator___is_ok))(variable1) /*ListIterator::is_ok*/;
-    if (!UNTAG_Bool(variable2)) break; /*for*/
-    variable2 = ((list___ListIterator___item_t)CALL(variable1,COLOR_abstract_collection___Iterator___item))(variable1) /*ListIterator::item*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/,  variable2 /*n*/) /*Visitor::visit*/;
-    continue_744: while(0);
-    ((list___ListIterator___next_t)CALL(variable1,COLOR_abstract_collection___Iterator___next))(variable1) /*ListIterator::next*/;
+    /* Register variable[4]: For 'is_ok' result */
+    variable[4] = CALL_abstract_collection___Iterator___is_ok(variable[3])(variable[3]) /*ListIterator::is_ok*/;
+    if (!UNTAG_Bool(variable[4])) break; /*for*/
+    variable[4] = CALL_abstract_collection___Iterator___item(variable[3])(variable[3]) /*ListIterator::item*/ /* Ensure var: For item*/;
+    /* Register variable[5]: Local variable */
+    variable[5] = variable[4];
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/,  variable[5] /*n*/) /*Visitor::visit*/;
+    continue_777: while(0);
+    CALL_abstract_collection___Iterator___next(variable[3])(variable[3]) /*ListIterator::next*/;
+  }
+  break_777: while(0);
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___ASendExpr____n_closure_defs(variable[0]) /*ASendExpr::_n_closure_defs*/;
+  /* Register variable[3]: For iterator */
+  variable[3] = CALL_abstract_collection___Collection___iterator(variable[3])(variable[3]) /*List::iterator*/;
+  while (true) { /*for*/
+    /* Register variable[4]: For 'is_ok' result */
+    variable[4] = CALL_abstract_collection___Iterator___is_ok(variable[3])(variable[3]) /*ListIterator::is_ok*/;
+    if (!UNTAG_Bool(variable[4])) break; /*for*/
+    variable[4] = CALL_abstract_collection___Iterator___item(variable[3])(variable[3]) /*ListIterator::item*/ /* Ensure var: For item*/;
+    /* Register variable[5]: Local variable */
+    variable[5] = variable[4];
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/,  variable[5] /*n*/) /*Visitor::visit*/;
+    continue_778: while(0);
+    CALL_abstract_collection___Iterator___next(variable[3])(variable[3]) /*ListIterator::next*/;
   }
-  break_744: while(0);
+  break_778: while(0);
+  return_label776: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___ABraExpr___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::ABraExpr::visit_all_reverse (src/parser//parser_prod.nit:8595,5--8604:11)"};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___ASendExpr____n_expr( self) /*ABraExpr::_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*/) /*PExpr::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___ASendExpr____n_expr( self) /*ABraExpr::_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) /*ABraExpr::_n_args*/;
-  variable2 = ((list___List___length_t)CALL(variable2,COLOR_abstract_collection___Collection___length))(variable2) /*List::length*/;
-  variable1 = variable2;
+  struct trace_t trace = {NULL, NULL, 9007, LOCATE_parser_prod___ABraExpr___visit_all_reverse};
+  val_t variable[5];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___ASendExpr____n_expr(variable[0]) /*ASendExpr::_n_expr*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___ASendExpr____n_expr(variable[0]) /*ASendExpr::_n_expr*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Local variable */
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___ABraFormExpr____n_args(variable[0]) /*ABraFormExpr::_n_args*/;
+  /* Register variable[4]: Result */
+  variable[4] = CALL_abstract_collection___Collection___length(variable[4])(variable[4]) /*List::length*/;
+  variable[3] = variable[4];
   while (true) { /*while*/
-    variable2 = TAG_Bool(UNTAG_Int( variable1 /*i*/)>=UNTAG_Int( TAG_Int(0)));
-    if (!UNTAG_Bool(variable2)) break; /* while*/
-    variable2 = ATTR_parser_nodes___ABraFormExpr____n_args( self) /*ABraExpr::_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_746: while(0);
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(UNTAG_Int( variable[3] /*i*/)>=UNTAG_Int( TAG_Int(0)));
+    if (!UNTAG_Bool(variable[4])) break; /* while*/
+    /* Register variable[4]: Result */
+    variable[4] = ATTR_parser_nodes___ABraFormExpr____n_args(variable[0]) /*ABraFormExpr::_n_args*/;
+    /* Register variable[4]: Result */
+    variable[4] = CALL_abstract_collection___MapRead_____bra(variable[4])(variable[4],  variable[3] /*i*/) /*List::[]*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[4]) /*Visitor::visit*/;
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Int(UNTAG_Int( variable[3] /*i*/)-UNTAG_Int( TAG_Int(1)));
+    variable[3] = variable[4] /*i=*/;
+    continue_780: while(0);
+  }
+  break_780: while(0);
+  /* Register variable[3]: Local variable */
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___ASendExpr____n_closure_defs(variable[0]) /*ASendExpr::_n_closure_defs*/;
+  /* Register variable[4]: Result */
+  variable[4] = CALL_abstract_collection___Collection___length(variable[4])(variable[4]) /*List::length*/;
+  variable[3] = variable[4];
+  while (true) { /*while*/
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(UNTAG_Int( variable[3] /*i*/)>=UNTAG_Int( TAG_Int(0)));
+    if (!UNTAG_Bool(variable[4])) break; /* while*/
+    /* Register variable[4]: Result */
+    variable[4] = ATTR_parser_nodes___ASendExpr____n_closure_defs(variable[0]) /*ASendExpr::_n_closure_defs*/;
+    /* Register variable[4]: Result */
+    variable[4] = CALL_abstract_collection___MapRead_____bra(variable[4])(variable[4],  variable[3] /*i*/) /*List::[]*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[4]) /*Visitor::visit*/;
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Int(UNTAG_Int( variable[3] /*i*/)-UNTAG_Int( TAG_Int(1)));
+    variable[3] = variable[4] /*i=*/;
+    continue_781: while(0);
   }
-  break_746: while(0);
+  break_781: while(0);
+  return_label779: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___ABraAssignExpr___n_expr__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::ABraAssignExpr::n_expr= (src/parser//parser_prod.nit:8610,5--8614:20)"};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  variable0 =  param0;
-  ATTR_parser_nodes___ASendExpr____n_expr( self) /*ABraAssignExpr::_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*/) /*PExpr::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PExpr::parent=*/;
-  }
+void parser_prod___ABraExpr___empty_init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 8928, LOCATE_parser_prod___ABraExpr___empty_init};
+  val_t variable[2];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ABraExpr].i]) return;
+  /* Register variable[1]: Method return value and escape marker */
+  return_label782: while(false);
+  init_table[VAL2OBJ(variable[0])->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, val_t  param2, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 8930, LOCATE_parser_prod___ABraExpr___init_abraexpr};
+  val_t variable[9];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Local variable */
+  variable[2] =  param1;
+  /* Register variable[3]: Local variable */
+  variable[3] =  param2;
+  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ABraExpr].i]) return;
+  /* Register variable[4]: Method return value and escape marker */
+  CALL_parser_prod___ABraExpr___empty_init(variable[0])(variable[0], init_table /*YYY*/) /*ABraExpr::empty_init*/;
+  ATTR_parser_nodes___ASendExpr____n_expr(variable[0]) /*ASendExpr::_n_expr*/ =  variable[1] /*n_expr*/;
+  /* Register variable[5]: Result */
+  variable[5] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_expr*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_expr*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n_expr*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_expr*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n_expr*/)( variable[1] /*n_expr*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[5])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n_expr*/)( variable[1] /*n_expr*/, variable[0]) /*PNode::parent=*/;
+  }
+  /* Register variable[5]: Result */
+  variable[5] = NEW_List_list___List___init() /*new List[PExpr]*/;
+  ATTR_parser_nodes___ABraFormExpr____n_args(variable[0]) /*ABraFormExpr::_n_args*/ = variable[5];
+  /* Register variable[5]: For iterator */
+  variable[5] = CALL_abstract_collection___Collection___iterator( variable[2] /*n_args*/)( variable[2] /*n_args*/) /*Collection::iterator*/;
+  while (true) { /*for*/
+    /* Register variable[6]: For 'is_ok' result */
+    variable[6] = CALL_abstract_collection___Iterator___is_ok(variable[5])(variable[5]) /*Iterator::is_ok*/;
+    if (!UNTAG_Bool(variable[6])) break; /*for*/
+    variable[6] = CALL_abstract_collection___Iterator___item(variable[5])(variable[5]) /*Iterator::item*/ /* Ensure var: For item*/;
+    /* Register variable[7]: Local variable */
+    variable[7] = variable[6];
+    /* Register variable[8]: Result */
+    variable[8] = TAG_Bool(( variable[7] /*n*/==NIT_NULL) || VAL_ISA( variable[7] /*n*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
+    if (!UNTAG_Bool(variable[8])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ABraExpr___init_abraexpr, LOCATE_parser_prod, 8943); nit_exit(1);}
+    /* Register variable[8]: Result */
+    variable[8] = ATTR_parser_nodes___ABraFormExpr____n_args(variable[0]) /*ABraFormExpr::_n_args*/;
+    CALL_abstract_collection___SimpleCollection___add(variable[8])(variable[8],  variable[7] /*n*/) /*IndexedCollection::add*/;
+    CALL_parser_prod___PNode___parent__eq( variable[7] /*n*/)( variable[7] /*n*/, variable[0]) /*PNode::parent=*/;
+    continue_784: while(0);
+    CALL_abstract_collection___Iterator___next(variable[5])(variable[5]) /*Iterator::next*/;
+  }
+  break_784: while(0);
+  /* Register variable[5]: Result */
+  variable[5] = NEW_List_list___List___init() /*new List[PClosureDef]*/;
+  ATTR_parser_nodes___ASendExpr____n_closure_defs(variable[0]) /*ASendExpr::_n_closure_defs*/ = variable[5];
+  /* Register variable[5]: For iterator */
+  variable[5] = CALL_abstract_collection___Collection___iterator( variable[3] /*n_closure_defs*/)( variable[3] /*n_closure_defs*/) /*Collection::iterator*/;
+  while (true) { /*for*/
+    /* Register variable[6]: For 'is_ok' result */
+    variable[6] = CALL_abstract_collection___Iterator___is_ok(variable[5])(variable[5]) /*Iterator::is_ok*/;
+    if (!UNTAG_Bool(variable[6])) break; /*for*/
+    variable[6] = CALL_abstract_collection___Iterator___item(variable[5])(variable[5]) /*Iterator::item*/ /* Ensure var: For item*/;
+    /* Register variable[7]: Local variable */
+    variable[7] = variable[6];
+    /* Register variable[8]: Result */
+    variable[8] = TAG_Bool(( variable[7] /*n*/==NIT_NULL) || VAL_ISA( variable[7] /*n*/, COLOR_PClosureDef, ID_PClosureDef)) /*cast PClosureDef*/;
+    if (!UNTAG_Bool(variable[8])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ABraExpr___init_abraexpr, LOCATE_parser_prod, 8949); nit_exit(1);}
+    /* Register variable[8]: Result */
+    variable[8] = ATTR_parser_nodes___ASendExpr____n_closure_defs(variable[0]) /*ASendExpr::_n_closure_defs*/;
+    CALL_abstract_collection___SimpleCollection___add(variable[8])(variable[8],  variable[7] /*n*/) /*IndexedCollection::add*/;
+    CALL_parser_prod___PNode___parent__eq( variable[7] /*n*/)( variable[7] /*n*/, variable[0]) /*PNode::parent=*/;
+    continue_785: while(0);
+    CALL_abstract_collection___Iterator___next(variable[5])(variable[5]) /*Iterator::next*/;
+  }
+  break_785: while(0);
+  return_label783: while(false);
+  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ABraExpr].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser_prod___ABraAssignExpr___n_assign__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::ABraAssignExpr::n_assign= (src/parser//parser_prod.nit:8617,5--8621:20)"};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___ABraAssignExpr___n_expr__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 9029, LOCATE_parser_prod___ABraAssignExpr___n_expr__eq};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  variable0 =  param0;
-  ATTR_parser_nodes___AAssignFormExpr____n_assign( self) /*ABraAssignExpr::_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*/) /*TAssign::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*TAssign::parent=*/;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  ATTR_parser_nodes___ASendExpr____n_expr(variable[0]) /*ASendExpr::_n_expr*/ =  variable[1] /*n*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[0]) /*PNode::parent=*/;
   }
+  return_label786: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___ABraAssignExpr___n_value__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::ABraAssignExpr::n_value= (src/parser//parser_prod.nit:8624,5--8628:20)"};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___ABraAssignExpr___n_assign__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 9036, LOCATE_parser_prod___ABraAssignExpr___n_assign__eq};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  variable0 =  param0;
-  ATTR_parser_nodes___AAssignFormExpr____n_value( self) /*ABraAssignExpr::_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*/) /*PExpr::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PExpr::parent=*/;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  ATTR_parser_nodes___AAssignFormExpr____n_assign(variable[0]) /*AAssignFormExpr::_n_assign*/ =  variable[1] /*n*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[0]) /*PNode::parent=*/;
   }
+  return_label787: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___ABraAssignExpr___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, "parser_prod::ABraAssignExpr::empty_init (src/parser//parser_prod.nit:8632,5--27)"};
+void parser_prod___ABraAssignExpr___n_value__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 9043, LOCATE_parser_prod___ABraAssignExpr___n_value__eq};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  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, "parser_prod::ABraAssignExpr::init_abraassignexpr (src/parser//parser_prod.nit:8634,5--8657:23)"};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  val_t variable3;
-  val_t variable4;
-    val_t variable5;
-    val_t variable6;
-  trace.prev = tracehead; tracehead = &trace;
-  variable0 =  param0;
-  variable1 =  param1;
-  variable2 =  param2;
-  variable3 =  param3;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ABraAssignExpr].i]) return;
-  ATTR_parser_nodes___ASendExpr____n_expr( self) /*ABraAssignExpr::_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*/) /*PExpr::==*/)))))));
-  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) /*PExpr::parent=*/;
-  }
-  variable4 = NEW_list___List___init(); /*new List[PExpr]*/
-  ATTR_parser_nodes___ABraFormExpr____n_args( self) /*ABraAssignExpr::_n_args*/ = variable4;
-  variable4 = ((array___AbstractArray___iterator_t)CALL( variable1 /*n_args*/,COLOR_abstract_collection___Collection___iterator))( variable1 /*n_args*/) /*Array::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 failed: src/parser//parser_prod.nit:8647,3--20\n"); nit_exit(1);}
-    variable6 = ATTR_parser_nodes___ABraFormExpr____n_args( self) /*ABraAssignExpr::_n_args*/;
-    ((abstract_collection___IndexedCollection___add_t)CALL(variable6,COLOR_abstract_collection___SimpleCollection___add))(variable6,  variable5 /*n*/) /*List::add*/;
-    ((parser_prod___PNode___parent__eq_t)CALL( variable5 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable5 /*n*/,  self) /*PExpr::parent=*/;
-    continue_752: while(0);
-    ((array___ArrayIterator___next_t)CALL(variable4,COLOR_abstract_collection___Iterator___next))(variable4) /*ArrayIterator::next*/;
-  }
-  break_752: while(0);
-  ATTR_parser_nodes___AAssignFormExpr____n_assign( self) /*ABraAssignExpr::_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*/) /*TAssign::==*/)))))));
-  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) /*TAssign::parent=*/;
-  }
-  ATTR_parser_nodes___AAssignFormExpr____n_value( self) /*ABraAssignExpr::_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*/) /*PExpr::==*/)))))));
-  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) /*PExpr::parent=*/;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  ATTR_parser_nodes___AAssignFormExpr____n_value(variable[0]) /*AAssignFormExpr::_n_value*/ =  variable[1] /*n*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[0]) /*PNode::parent=*/;
   }
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ABraAssignExpr].i] = 1;
+  return_label788: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___ABraAssignExpr___replace_child(val_t  self, val_t  param0, val_t  param1) {
-  struct trace_t trace = {NULL, "parser_prod::ABraAssignExpr::replace_child (src/parser//parser_prod.nit:8661,5--8704:18)"};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  val_t variable3;
-    val_t variable4;
-  trace.prev = tracehead; tracehead = &trace;
-  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*/) /*PNode::==*/)))))));
-  if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert failed: src/parser//parser_prod.nit:8663,9--32\n"); nit_exit(1);}
-  variable2 = ATTR_parser_nodes___ASendExpr____n_expr( self) /*ABraAssignExpr::_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*/) /*PExpr::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*PNode::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_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 failed: src/parser//parser_prod.nit:8667,3--28\n"); nit_exit(1);}
-      ATTR_parser_nodes___ASendExpr____n_expr( self) /*ABraAssignExpr::_n_expr*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___ASendExpr____n_expr( self) /*ABraAssignExpr::_n_expr*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label753;
-  }
-  variable2 = ATTR_parser_nodes___ABraFormExpr____n_args( self) /*ABraAssignExpr::_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[Int]*/
-  variable2 = variable3;
-  variable2 = ((range___Range___iterator_t)CALL(variable2,COLOR_abstract_collection___Collection___iterator))(variable2) /*Range::iterator*/;
+  struct trace_t trace = {NULL, NULL, 9081, LOCATE_parser_prod___ABraAssignExpr___replace_child};
+  val_t variable[8];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Local variable */
+  variable[2] =  param1;
+  /* Register variable[3]: Method return value and escape marker */
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ABraAssignExpr___replace_child, LOCATE_parser_prod, 9083); nit_exit(1);}
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___ASendExpr____n_expr(variable[0]) /*ASendExpr::_n_expr*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*PNode::parent=*/;
+      /* Register variable[4]: Result */
+      variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
+      if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ABraAssignExpr___replace_child, LOCATE_parser_prod, 9087); nit_exit(1);}
+      ATTR_parser_nodes___ASendExpr____n_expr(variable[0]) /*ASendExpr::_n_expr*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      ATTR_parser_nodes___ASendExpr____n_expr(variable[0]) /*ASendExpr::_n_expr*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label789;
+  }
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___ABraFormExpr____n_args(variable[0]) /*ABraFormExpr::_n_args*/;
+  /* Register variable[4]: Result */
+  variable[4] = CALL_abstract_collection___Collection___length(variable[4])(variable[4]) /*List::length*/;
+  /* Register variable[4]: Result */
+  variable[4] = NEW_Range_range___Range___without_last( TAG_Int(0), variable[4]) /*new Range[Int]*/;
+  /* Register variable[4]: For iterator */
+  variable[4] = CALL_abstract_collection___Collection___iterator(variable[4])(variable[4]) /*Range::iterator*/;
   while (true) { /*for*/
-    variable3 = ((abstract_collection___Iterator___is_ok_t)CALL(variable2,COLOR_abstract_collection___Iterator___is_ok))(variable2) /*Iterator::is_ok*/;
-    if (!UNTAG_Bool(variable3)) break; /*for*/
-    variable3 = ((abstract_collection___Iterator___item_t)CALL(variable2,COLOR_abstract_collection___Iterator___item))(variable2) /*Iterator::item*/;
-    variable4 = ATTR_parser_nodes___ABraFormExpr____n_args( self) /*ABraAssignExpr::_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*/) /*PExpr::==*/)))));
-    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*/) /*PNode::==*/)))))));
-      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 failed: src/parser//parser_prod.nit:8677,7--32\n"); nit_exit(1);}
-        variable4 = ATTR_parser_nodes___ABraFormExpr____n_args( self) /*ABraAssignExpr::_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) /*PExpr::parent=*/;
+    /* Register variable[5]: For 'is_ok' result */
+    variable[5] = CALL_abstract_collection___Iterator___is_ok(variable[4])(variable[4]) /*Iterator::is_ok*/;
+    if (!UNTAG_Bool(variable[5])) break; /*for*/
+    variable[5] = CALL_abstract_collection___Iterator___item(variable[4])(variable[4]) /*Iterator::item*/ /* Ensure var: For item*/;
+    /* Register variable[6]: Local variable */
+    variable[6] = variable[5];
+    /* Register variable[7]: Result */
+    variable[7] = ATTR_parser_nodes___ABraFormExpr____n_args(variable[0]) /*ABraFormExpr::_n_args*/;
+    /* Register variable[7]: Result */
+    variable[7] = CALL_abstract_collection___MapRead_____bra(variable[7])(variable[7],  variable[6] /*i*/) /*List::[]*/;
+    /* Register variable[7]: Result */
+    variable[7] = TAG_Bool((variable[7] ==  variable[1] /*old_child*/) || ((variable[7] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[7])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[7], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[7])(variable[7],  variable[1] /*old_child*/) /*Object::==*/)))));
+    if (UNTAG_Bool(variable[7])) { /*if*/
+      /* Register variable[7]: Result */
+      variable[7] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+      if (UNTAG_Bool(variable[7])) { /*if*/
+        /* Register variable[7]: Result */
+        variable[7] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
+        if (!UNTAG_Bool(variable[7])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ABraAssignExpr___replace_child, LOCATE_parser_prod, 9097); nit_exit(1);}
+        /* Register variable[7]: Result */
+        variable[7] = ATTR_parser_nodes___ABraFormExpr____n_args(variable[0]) /*ABraFormExpr::_n_args*/;
+        CALL_abstract_collection___Map_____braeq(variable[7])(variable[7],  variable[6] /*i*/,  variable[2] /*new_child*/) /*List::[]=*/;
+        CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*PNode::parent=*/;
       } else { /*if*/
-        variable4 = ATTR_parser_nodes___ABraFormExpr____n_args( self) /*ABraAssignExpr::_n_args*/;
-        ((list___List___remove_at_t)CALL(variable4,COLOR_abstract_collection___Map___remove_at))(variable4,  variable3 /*i*/) /*List::remove_at*/;
+        /* Register variable[7]: Result */
+        variable[7] = ATTR_parser_nodes___ABraFormExpr____n_args(variable[0]) /*ABraFormExpr::_n_args*/;
+        CALL_abstract_collection___Map___remove_at(variable[7])(variable[7],  variable[6] /*i*/) /*List::remove_at*/;
       }
-      goto return_label753;
-    }
-    continue_754: while(0);
-    ((abstract_collection___Iterator___next_t)CALL(variable2,COLOR_abstract_collection___Iterator___next))(variable2) /*Iterator::next*/;
-  }
-  break_754: while(0);
-  variable2 = ATTR_parser_nodes___AAssignFormExpr____n_assign( self) /*ABraAssignExpr::_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*/) /*TAssign::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*PNode::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_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 failed: src/parser//parser_prod.nit:8689,3--30\n"); nit_exit(1);}
-      ATTR_parser_nodes___AAssignFormExpr____n_assign( self) /*ABraAssignExpr::_n_assign*/ =  variable1 /*new_child*/;
+      goto return_label789;
+    }
+    continue_790: while(0);
+    CALL_abstract_collection___Iterator___next(variable[4])(variable[4]) /*Iterator::next*/;
+  }
+  break_790: while(0);
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___AAssignFormExpr____n_assign(variable[0]) /*AAssignFormExpr::_n_assign*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*PNode::parent=*/;
+      /* Register variable[4]: Result */
+      variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_TAssign, ID_TAssign)) /*cast TAssign*/;
+      if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ABraAssignExpr___replace_child, LOCATE_parser_prod, 9109); nit_exit(1);}
+      ATTR_parser_nodes___AAssignFormExpr____n_assign(variable[0]) /*AAssignFormExpr::_n_assign*/ =  variable[2] /*new_child*/;
     } else { /*if*/
-      ATTR_parser_nodes___AAssignFormExpr____n_assign( self) /*ABraAssignExpr::_n_assign*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label753;
-  }
-  variable2 = ATTR_parser_nodes___AAssignFormExpr____n_value( self) /*ABraAssignExpr::_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*/) /*PExpr::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*PNode::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_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 failed: src/parser//parser_prod.nit:8699,3--28\n"); nit_exit(1);}
-      ATTR_parser_nodes___AAssignFormExpr____n_value( self) /*ABraAssignExpr::_n_value*/ =  variable1 /*new_child*/;
+      ATTR_parser_nodes___AAssignFormExpr____n_assign(variable[0]) /*AAssignFormExpr::_n_assign*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label789;
+  }
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___AAssignFormExpr____n_value(variable[0]) /*AAssignFormExpr::_n_value*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*PNode::parent=*/;
+      /* Register variable[4]: Result */
+      variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
+      if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ABraAssignExpr___replace_child, LOCATE_parser_prod, 9119); nit_exit(1);}
+      ATTR_parser_nodes___AAssignFormExpr____n_value(variable[0]) /*AAssignFormExpr::_n_value*/ =  variable[2] /*new_child*/;
     } else { /*if*/
-      ATTR_parser_nodes___AAssignFormExpr____n_value( self) /*ABraAssignExpr::_n_value*/ =  NIT_NULL /*null*/;
+      ATTR_parser_nodes___AAssignFormExpr____n_value(variable[0]) /*AAssignFormExpr::_n_value*/ =  NIT_NULL /*null*/;
     }
-    goto return_label753;
+    goto return_label789;
   }
-  return_label753: while(false);
+  return_label789: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___ABraAssignExpr___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::ABraAssignExpr::visit_all (src/parser//parser_prod.nit:8708,5--8720:28)"};
-  val_t variable0;
-  val_t variable1;
-    val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___ASendExpr____n_expr( self) /*ABraAssignExpr::_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*/) /*PExpr::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___ASendExpr____n_expr( self) /*ABraAssignExpr::_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) /*ABraAssignExpr::_n_args*/;
-  variable1 = ((list___List___iterator_t)CALL(variable1,COLOR_abstract_collection___Collection___iterator))(variable1) /*List::iterator*/;
+  struct trace_t trace = {NULL, NULL, 9128, LOCATE_parser_prod___ABraAssignExpr___visit_all};
+  val_t variable[6];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___ASendExpr____n_expr(variable[0]) /*ASendExpr::_n_expr*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___ASendExpr____n_expr(variable[0]) /*ASendExpr::_n_expr*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___ABraFormExpr____n_args(variable[0]) /*ABraFormExpr::_n_args*/;
+  /* Register variable[3]: For iterator */
+  variable[3] = CALL_abstract_collection___Collection___iterator(variable[3])(variable[3]) /*List::iterator*/;
   while (true) { /*for*/
-    variable2 = ((list___ListIterator___is_ok_t)CALL(variable1,COLOR_abstract_collection___Iterator___is_ok))(variable1) /*ListIterator::is_ok*/;
-    if (!UNTAG_Bool(variable2)) break; /*for*/
-    variable2 = ((list___ListIterator___item_t)CALL(variable1,COLOR_abstract_collection___Iterator___item))(variable1) /*ListIterator::item*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/,  variable2 /*n*/) /*Visitor::visit*/;
-    continue_756: while(0);
-    ((list___ListIterator___next_t)CALL(variable1,COLOR_abstract_collection___Iterator___next))(variable1) /*ListIterator::next*/;
-  }
-  break_756: while(0);
-  variable1 = ATTR_parser_nodes___AAssignFormExpr____n_assign( self) /*ABraAssignExpr::_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*/) /*TAssign::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AAssignFormExpr____n_assign( self) /*ABraAssignExpr::_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) /*ABraAssignExpr::_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*/) /*PExpr::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AAssignFormExpr____n_value( self) /*ABraAssignExpr::_n_value*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
+    /* Register variable[4]: For 'is_ok' result */
+    variable[4] = CALL_abstract_collection___Iterator___is_ok(variable[3])(variable[3]) /*ListIterator::is_ok*/;
+    if (!UNTAG_Bool(variable[4])) break; /*for*/
+    variable[4] = CALL_abstract_collection___Iterator___item(variable[3])(variable[3]) /*ListIterator::item*/ /* Ensure var: For item*/;
+    /* Register variable[5]: Local variable */
+    variable[5] = variable[4];
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/,  variable[5] /*n*/) /*Visitor::visit*/;
+    continue_792: while(0);
+    CALL_abstract_collection___Iterator___next(variable[3])(variable[3]) /*ListIterator::next*/;
+  }
+  break_792: while(0);
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AAssignFormExpr____n_assign(variable[0]) /*AAssignFormExpr::_n_assign*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AAssignFormExpr____n_assign(variable[0]) /*AAssignFormExpr::_n_assign*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AAssignFormExpr____n_value(variable[0]) /*AAssignFormExpr::_n_value*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AAssignFormExpr____n_value(variable[0]) /*AAssignFormExpr::_n_value*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  return_label791: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___ABraAssignExpr___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::ABraAssignExpr::visit_all_reverse (src/parser//parser_prod.nit:8724,5--8740:28)"};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___ASendExpr____n_expr( self) /*ABraAssignExpr::_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*/) /*PExpr::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___ASendExpr____n_expr( self) /*ABraAssignExpr::_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) /*ABraAssignExpr::_n_args*/;
-  variable2 = ((list___List___length_t)CALL(variable2,COLOR_abstract_collection___Collection___length))(variable2) /*List::length*/;
-  variable1 = variable2;
+  struct trace_t trace = {NULL, NULL, 9144, LOCATE_parser_prod___ABraAssignExpr___visit_all_reverse};
+  val_t variable[5];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___ASendExpr____n_expr(variable[0]) /*ASendExpr::_n_expr*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___ASendExpr____n_expr(variable[0]) /*ASendExpr::_n_expr*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Local variable */
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___ABraFormExpr____n_args(variable[0]) /*ABraFormExpr::_n_args*/;
+  /* Register variable[4]: Result */
+  variable[4] = CALL_abstract_collection___Collection___length(variable[4])(variable[4]) /*List::length*/;
+  variable[3] = variable[4];
   while (true) { /*while*/
-    variable2 = TAG_Bool(UNTAG_Int( variable1 /*i*/)>=UNTAG_Int( TAG_Int(0)));
-    if (!UNTAG_Bool(variable2)) break; /* while*/
-    variable2 = ATTR_parser_nodes___ABraFormExpr____n_args( self) /*ABraAssignExpr::_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_758: while(0);
-  }
-  break_758: while(0);
-  variable1 = ATTR_parser_nodes___AAssignFormExpr____n_assign( self) /*ABraAssignExpr::_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*/) /*TAssign::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AAssignFormExpr____n_assign( self) /*ABraAssignExpr::_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) /*ABraAssignExpr::_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*/) /*PExpr::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AAssignFormExpr____n_value( self) /*ABraAssignExpr::_n_value*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(UNTAG_Int( variable[3] /*i*/)>=UNTAG_Int( TAG_Int(0)));
+    if (!UNTAG_Bool(variable[4])) break; /* while*/
+    /* Register variable[4]: Result */
+    variable[4] = ATTR_parser_nodes___ABraFormExpr____n_args(variable[0]) /*ABraFormExpr::_n_args*/;
+    /* Register variable[4]: Result */
+    variable[4] = CALL_abstract_collection___MapRead_____bra(variable[4])(variable[4],  variable[3] /*i*/) /*List::[]*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[4]) /*Visitor::visit*/;
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Int(UNTAG_Int( variable[3] /*i*/)-UNTAG_Int( TAG_Int(1)));
+    variable[3] = variable[4] /*i=*/;
+    continue_794: while(0);
+  }
+  break_794: while(0);
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AAssignFormExpr____n_assign(variable[0]) /*AAssignFormExpr::_n_assign*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AAssignFormExpr____n_assign(variable[0]) /*AAssignFormExpr::_n_assign*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AAssignFormExpr____n_value(variable[0]) /*AAssignFormExpr::_n_value*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AAssignFormExpr____n_value(variable[0]) /*AAssignFormExpr::_n_value*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  return_label793: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___ABraReassignExpr___n_expr__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::ABraReassignExpr::n_expr= (src/parser//parser_prod.nit:8745,5--8749:20)"};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___ABraAssignExpr___empty_init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 9051, LOCATE_parser_prod___ABraAssignExpr___empty_init};
+  val_t variable[2];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  variable0 =  param0;
-  ATTR_parser_nodes___ASendExpr____n_expr( self) /*ABraReassignExpr::_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*/) /*PExpr::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PExpr::parent=*/;
-  }
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ABraAssignExpr].i]) return;
+  /* Register variable[1]: Method return value and escape marker */
+  return_label795: while(false);
+  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ABraAssignExpr].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser_prod___ABraReassignExpr___n_assign_op__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::ABraReassignExpr::n_assign_op= (src/parser//parser_prod.nit:8752,5--8756:20)"};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  variable0 =  param0;
-  ATTR_parser_nodes___AReassignFormExpr____n_assign_op( self) /*ABraReassignExpr::_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*/) /*PAssignOp::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PAssignOp::parent=*/;
-  }
+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, 9053, LOCATE_parser_prod___ABraAssignExpr___init_abraassignexpr};
+  val_t variable[10];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Local variable */
+  variable[2] =  param1;
+  /* Register variable[3]: Local variable */
+  variable[3] =  param2;
+  /* Register variable[4]: Local variable */
+  variable[4] =  param3;
+  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ABraAssignExpr].i]) return;
+  /* Register variable[5]: Method return value and escape marker */
+  CALL_parser_prod___ABraAssignExpr___empty_init(variable[0])(variable[0], init_table /*YYY*/) /*ABraAssignExpr::empty_init*/;
+  ATTR_parser_nodes___ASendExpr____n_expr(variable[0]) /*ASendExpr::_n_expr*/ =  variable[1] /*n_expr*/;
+  /* Register variable[6]: Result */
+  variable[6] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_expr*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_expr*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n_expr*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_expr*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n_expr*/)( variable[1] /*n_expr*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[6])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n_expr*/)( variable[1] /*n_expr*/, variable[0]) /*PNode::parent=*/;
+  }
+  /* Register variable[6]: Result */
+  variable[6] = NEW_List_list___List___init() /*new List[PExpr]*/;
+  ATTR_parser_nodes___ABraFormExpr____n_args(variable[0]) /*ABraFormExpr::_n_args*/ = variable[6];
+  /* Register variable[6]: For iterator */
+  variable[6] = CALL_abstract_collection___Collection___iterator( variable[2] /*n_args*/)( variable[2] /*n_args*/) /*Collection::iterator*/;
+  while (true) { /*for*/
+    /* Register variable[7]: For 'is_ok' result */
+    variable[7] = CALL_abstract_collection___Iterator___is_ok(variable[6])(variable[6]) /*Iterator::is_ok*/;
+    if (!UNTAG_Bool(variable[7])) break; /*for*/
+    variable[7] = CALL_abstract_collection___Iterator___item(variable[6])(variable[6]) /*Iterator::item*/ /* Ensure var: For item*/;
+    /* Register variable[8]: Local variable */
+    variable[8] = variable[7];
+    /* Register variable[9]: Result */
+    variable[9] = TAG_Bool(( variable[8] /*n*/==NIT_NULL) || VAL_ISA( variable[8] /*n*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
+    if (!UNTAG_Bool(variable[9])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ABraAssignExpr___init_abraassignexpr, LOCATE_parser_prod, 9067); nit_exit(1);}
+    /* Register variable[9]: Result */
+    variable[9] = ATTR_parser_nodes___ABraFormExpr____n_args(variable[0]) /*ABraFormExpr::_n_args*/;
+    CALL_abstract_collection___SimpleCollection___add(variable[9])(variable[9],  variable[8] /*n*/) /*IndexedCollection::add*/;
+    CALL_parser_prod___PNode___parent__eq( variable[8] /*n*/)( variable[8] /*n*/, variable[0]) /*PNode::parent=*/;
+    continue_797: while(0);
+    CALL_abstract_collection___Iterator___next(variable[6])(variable[6]) /*Iterator::next*/;
+  }
+  break_797: while(0);
+  ATTR_parser_nodes___AAssignFormExpr____n_assign(variable[0]) /*AAssignFormExpr::_n_assign*/ =  variable[3] /*n_assign*/;
+  /* Register variable[6]: Result */
+  variable[6] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[3] /*n_assign*/ ==  NIT_NULL /*null*/) || (( variable[3] /*n_assign*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[3] /*n_assign*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[3] /*n_assign*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[3] /*n_assign*/)( variable[3] /*n_assign*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[6])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[3] /*n_assign*/)( variable[3] /*n_assign*/, variable[0]) /*PNode::parent=*/;
+  }
+  ATTR_parser_nodes___AAssignFormExpr____n_value(variable[0]) /*AAssignFormExpr::_n_value*/ =  variable[4] /*n_value*/;
+  /* Register variable[6]: Result */
+  variable[6] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[4] /*n_value*/ ==  NIT_NULL /*null*/) || (( variable[4] /*n_value*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[4] /*n_value*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[4] /*n_value*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[4] /*n_value*/)( variable[4] /*n_value*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[6])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[4] /*n_value*/)( variable[4] /*n_value*/, variable[0]) /*PNode::parent=*/;
+  }
+  return_label796: while(false);
+  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ABraAssignExpr].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser_prod___ABraReassignExpr___n_value__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::ABraReassignExpr::n_value= (src/parser//parser_prod.nit:8759,5--8763:20)"};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___ABraReassignExpr___n_expr__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 9165, LOCATE_parser_prod___ABraReassignExpr___n_expr__eq};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  variable0 =  param0;
-  ATTR_parser_nodes___AReassignFormExpr____n_value( self) /*ABraReassignExpr::_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*/) /*PExpr::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PExpr::parent=*/;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  ATTR_parser_nodes___ASendExpr____n_expr(variable[0]) /*ASendExpr::_n_expr*/ =  variable[1] /*n*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[0]) /*PNode::parent=*/;
   }
+  return_label798: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___ABraReassignExpr___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, "parser_prod::ABraReassignExpr::empty_init (src/parser//parser_prod.nit:8767,5--27)"};
+void parser_prod___ABraReassignExpr___n_assign_op__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 9172, LOCATE_parser_prod___ABraReassignExpr___n_assign_op__eq};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ABraReassignExpr].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ABraReassignExpr].i] = 1;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  ATTR_parser_nodes___AReassignFormExpr____n_assign_op(variable[0]) /*AReassignFormExpr::_n_assign_op*/ =  variable[1] /*n*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[0]) /*PNode::parent=*/;
+  }
+  return_label799: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___ABraReassignExpr___init_abrareassignexpr(val_t  self, val_t  param0, val_t  param1, val_t  param2, val_t  param3, int* init_table) {
-  struct trace_t trace = {NULL, "parser_prod::ABraReassignExpr::init_abrareassignexpr (src/parser//parser_prod.nit:8769,5--8792:23)"};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  val_t variable3;
-  val_t variable4;
-    val_t variable5;
-    val_t variable6;
-  trace.prev = tracehead; tracehead = &trace;
-  variable0 =  param0;
-  variable1 =  param1;
-  variable2 =  param2;
-  variable3 =  param3;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ABraReassignExpr].i]) return;
-  ATTR_parser_nodes___ASendExpr____n_expr( self) /*ABraReassignExpr::_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*/) /*PExpr::==*/)))))));
-  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) /*PExpr::parent=*/;
-  }
-  variable4 = NEW_list___List___init(); /*new List[PExpr]*/
-  ATTR_parser_nodes___ABraFormExpr____n_args( self) /*ABraReassignExpr::_n_args*/ = variable4;
-  variable4 = ((array___AbstractArray___iterator_t)CALL( variable1 /*n_args*/,COLOR_abstract_collection___Collection___iterator))( variable1 /*n_args*/) /*Array::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 failed: src/parser//parser_prod.nit:8782,3--20\n"); nit_exit(1);}
-    variable6 = ATTR_parser_nodes___ABraFormExpr____n_args( self) /*ABraReassignExpr::_n_args*/;
-    ((abstract_collection___IndexedCollection___add_t)CALL(variable6,COLOR_abstract_collection___SimpleCollection___add))(variable6,  variable5 /*n*/) /*List::add*/;
-    ((parser_prod___PNode___parent__eq_t)CALL( variable5 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable5 /*n*/,  self) /*PExpr::parent=*/;
-    continue_764: while(0);
-    ((array___ArrayIterator___next_t)CALL(variable4,COLOR_abstract_collection___Iterator___next))(variable4) /*ArrayIterator::next*/;
-  }
-  break_764: while(0);
-  ATTR_parser_nodes___AReassignFormExpr____n_assign_op( self) /*ABraReassignExpr::_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*/) /*PAssignOp::==*/)))))));
-  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) /*PAssignOp::parent=*/;
-  }
-  ATTR_parser_nodes___AReassignFormExpr____n_value( self) /*ABraReassignExpr::_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*/) /*PExpr::==*/)))))));
-  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) /*PExpr::parent=*/;
+void parser_prod___ABraReassignExpr___n_value__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 9179, LOCATE_parser_prod___ABraReassignExpr___n_value__eq};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  ATTR_parser_nodes___AReassignFormExpr____n_value(variable[0]) /*AReassignFormExpr::_n_value*/ =  variable[1] /*n*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[0]) /*PNode::parent=*/;
   }
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ABraReassignExpr].i] = 1;
+  return_label800: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___ABraReassignExpr___replace_child(val_t  self, val_t  param0, val_t  param1) {
-  struct trace_t trace = {NULL, "parser_prod::ABraReassignExpr::replace_child (src/parser//parser_prod.nit:8796,5--8839:18)"};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  val_t variable3;
-    val_t variable4;
-  trace.prev = tracehead; tracehead = &trace;
-  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*/) /*PNode::==*/)))))));
-  if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert failed: src/parser//parser_prod.nit:8798,9--32\n"); nit_exit(1);}
-  variable2 = ATTR_parser_nodes___ASendExpr____n_expr( self) /*ABraReassignExpr::_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*/) /*PExpr::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*PNode::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_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 failed: src/parser//parser_prod.nit:8802,3--28\n"); nit_exit(1);}
-      ATTR_parser_nodes___ASendExpr____n_expr( self) /*ABraReassignExpr::_n_expr*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___ASendExpr____n_expr( self) /*ABraReassignExpr::_n_expr*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label765;
-  }
-  variable2 = ATTR_parser_nodes___ABraFormExpr____n_args( self) /*ABraReassignExpr::_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[Int]*/
-  variable2 = variable3;
-  variable2 = ((range___Range___iterator_t)CALL(variable2,COLOR_abstract_collection___Collection___iterator))(variable2) /*Range::iterator*/;
+  struct trace_t trace = {NULL, NULL, 9217, LOCATE_parser_prod___ABraReassignExpr___replace_child};
+  val_t variable[8];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Local variable */
+  variable[2] =  param1;
+  /* Register variable[3]: Method return value and escape marker */
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ABraReassignExpr___replace_child, LOCATE_parser_prod, 9219); nit_exit(1);}
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___ASendExpr____n_expr(variable[0]) /*ASendExpr::_n_expr*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*PNode::parent=*/;
+      /* Register variable[4]: Result */
+      variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
+      if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ABraReassignExpr___replace_child, LOCATE_parser_prod, 9223); nit_exit(1);}
+      ATTR_parser_nodes___ASendExpr____n_expr(variable[0]) /*ASendExpr::_n_expr*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      ATTR_parser_nodes___ASendExpr____n_expr(variable[0]) /*ASendExpr::_n_expr*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label801;
+  }
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___ABraFormExpr____n_args(variable[0]) /*ABraFormExpr::_n_args*/;
+  /* Register variable[4]: Result */
+  variable[4] = CALL_abstract_collection___Collection___length(variable[4])(variable[4]) /*List::length*/;
+  /* Register variable[4]: Result */
+  variable[4] = NEW_Range_range___Range___without_last( TAG_Int(0), variable[4]) /*new Range[Int]*/;
+  /* Register variable[4]: For iterator */
+  variable[4] = CALL_abstract_collection___Collection___iterator(variable[4])(variable[4]) /*Range::iterator*/;
   while (true) { /*for*/
-    variable3 = ((abstract_collection___Iterator___is_ok_t)CALL(variable2,COLOR_abstract_collection___Iterator___is_ok))(variable2) /*Iterator::is_ok*/;
-    if (!UNTAG_Bool(variable3)) break; /*for*/
-    variable3 = ((abstract_collection___Iterator___item_t)CALL(variable2,COLOR_abstract_collection___Iterator___item))(variable2) /*Iterator::item*/;
-    variable4 = ATTR_parser_nodes___ABraFormExpr____n_args( self) /*ABraReassignExpr::_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*/) /*PExpr::==*/)))));
-    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*/) /*PNode::==*/)))))));
-      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 failed: src/parser//parser_prod.nit:8812,7--32\n"); nit_exit(1);}
-        variable4 = ATTR_parser_nodes___ABraFormExpr____n_args( self) /*ABraReassignExpr::_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) /*PExpr::parent=*/;
+    /* Register variable[5]: For 'is_ok' result */
+    variable[5] = CALL_abstract_collection___Iterator___is_ok(variable[4])(variable[4]) /*Iterator::is_ok*/;
+    if (!UNTAG_Bool(variable[5])) break; /*for*/
+    variable[5] = CALL_abstract_collection___Iterator___item(variable[4])(variable[4]) /*Iterator::item*/ /* Ensure var: For item*/;
+    /* Register variable[6]: Local variable */
+    variable[6] = variable[5];
+    /* Register variable[7]: Result */
+    variable[7] = ATTR_parser_nodes___ABraFormExpr____n_args(variable[0]) /*ABraFormExpr::_n_args*/;
+    /* Register variable[7]: Result */
+    variable[7] = CALL_abstract_collection___MapRead_____bra(variable[7])(variable[7],  variable[6] /*i*/) /*List::[]*/;
+    /* Register variable[7]: Result */
+    variable[7] = TAG_Bool((variable[7] ==  variable[1] /*old_child*/) || ((variable[7] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[7])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[7], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[7])(variable[7],  variable[1] /*old_child*/) /*Object::==*/)))));
+    if (UNTAG_Bool(variable[7])) { /*if*/
+      /* Register variable[7]: Result */
+      variable[7] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+      if (UNTAG_Bool(variable[7])) { /*if*/
+        /* Register variable[7]: Result */
+        variable[7] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
+        if (!UNTAG_Bool(variable[7])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ABraReassignExpr___replace_child, LOCATE_parser_prod, 9233); nit_exit(1);}
+        /* Register variable[7]: Result */
+        variable[7] = ATTR_parser_nodes___ABraFormExpr____n_args(variable[0]) /*ABraFormExpr::_n_args*/;
+        CALL_abstract_collection___Map_____braeq(variable[7])(variable[7],  variable[6] /*i*/,  variable[2] /*new_child*/) /*List::[]=*/;
+        CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*PNode::parent=*/;
       } else { /*if*/
-        variable4 = ATTR_parser_nodes___ABraFormExpr____n_args( self) /*ABraReassignExpr::_n_args*/;
-        ((list___List___remove_at_t)CALL(variable4,COLOR_abstract_collection___Map___remove_at))(variable4,  variable3 /*i*/) /*List::remove_at*/;
+        /* Register variable[7]: Result */
+        variable[7] = ATTR_parser_nodes___ABraFormExpr____n_args(variable[0]) /*ABraFormExpr::_n_args*/;
+        CALL_abstract_collection___Map___remove_at(variable[7])(variable[7],  variable[6] /*i*/) /*List::remove_at*/;
       }
-      goto return_label765;
+      goto return_label801;
+    }
+    continue_802: while(0);
+    CALL_abstract_collection___Iterator___next(variable[4])(variable[4]) /*Iterator::next*/;
+  }
+  break_802: while(0);
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___AReassignFormExpr____n_assign_op(variable[0]) /*AReassignFormExpr::_n_assign_op*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*PNode::parent=*/;
+      /* Register variable[4]: Result */
+      variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PAssignOp, ID_PAssignOp)) /*cast PAssignOp*/;
+      if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ABraReassignExpr___replace_child, LOCATE_parser_prod, 9245); nit_exit(1);}
+      ATTR_parser_nodes___AReassignFormExpr____n_assign_op(variable[0]) /*AReassignFormExpr::_n_assign_op*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      ATTR_parser_nodes___AReassignFormExpr____n_assign_op(variable[0]) /*AReassignFormExpr::_n_assign_op*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label801;
+  }
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___AReassignFormExpr____n_value(variable[0]) /*AReassignFormExpr::_n_value*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*PNode::parent=*/;
+      /* Register variable[4]: Result */
+      variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
+      if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ABraReassignExpr___replace_child, LOCATE_parser_prod, 9255); nit_exit(1);}
+      ATTR_parser_nodes___AReassignFormExpr____n_value(variable[0]) /*AReassignFormExpr::_n_value*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      ATTR_parser_nodes___AReassignFormExpr____n_value(variable[0]) /*AReassignFormExpr::_n_value*/ =  NIT_NULL /*null*/;
     }
-    continue_766: while(0);
-    ((abstract_collection___Iterator___next_t)CALL(variable2,COLOR_abstract_collection___Iterator___next))(variable2) /*Iterator::next*/;
+    goto return_label801;
   }
-  break_766: while(0);
-  variable2 = ATTR_parser_nodes___AReassignFormExpr____n_assign_op( self) /*ABraReassignExpr::_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*/) /*PAssignOp::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*PNode::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_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 failed: src/parser//parser_prod.nit:8824,3--32\n"); nit_exit(1);}
-      ATTR_parser_nodes___AReassignFormExpr____n_assign_op( self) /*ABraReassignExpr::_n_assign_op*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___AReassignFormExpr____n_assign_op( self) /*ABraReassignExpr::_n_assign_op*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label765;
-  }
-  variable2 = ATTR_parser_nodes___AReassignFormExpr____n_value( self) /*ABraReassignExpr::_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*/) /*PExpr::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*PNode::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_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 failed: src/parser//parser_prod.nit:8834,3--28\n"); nit_exit(1);}
-      ATTR_parser_nodes___AReassignFormExpr____n_value( self) /*ABraReassignExpr::_n_value*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___AReassignFormExpr____n_value( self) /*ABraReassignExpr::_n_value*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label765;
-  }
-  return_label765: while(false);
+  return_label801: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___ABraReassignExpr___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::ABraReassignExpr::visit_all (src/parser//parser_prod.nit:8843,5--8855:28)"};
-  val_t variable0;
-  val_t variable1;
-    val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___ASendExpr____n_expr( self) /*ABraReassignExpr::_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*/) /*PExpr::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___ASendExpr____n_expr( self) /*ABraReassignExpr::_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) /*ABraReassignExpr::_n_args*/;
-  variable1 = ((list___List___iterator_t)CALL(variable1,COLOR_abstract_collection___Collection___iterator))(variable1) /*List::iterator*/;
+  struct trace_t trace = {NULL, NULL, 9264, LOCATE_parser_prod___ABraReassignExpr___visit_all};
+  val_t variable[6];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___ASendExpr____n_expr(variable[0]) /*ASendExpr::_n_expr*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___ASendExpr____n_expr(variable[0]) /*ASendExpr::_n_expr*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___ABraFormExpr____n_args(variable[0]) /*ABraFormExpr::_n_args*/;
+  /* Register variable[3]: For iterator */
+  variable[3] = CALL_abstract_collection___Collection___iterator(variable[3])(variable[3]) /*List::iterator*/;
   while (true) { /*for*/
-    variable2 = ((list___ListIterator___is_ok_t)CALL(variable1,COLOR_abstract_collection___Iterator___is_ok))(variable1) /*ListIterator::is_ok*/;
-    if (!UNTAG_Bool(variable2)) break; /*for*/
-    variable2 = ((list___ListIterator___item_t)CALL(variable1,COLOR_abstract_collection___Iterator___item))(variable1) /*ListIterator::item*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/,  variable2 /*n*/) /*Visitor::visit*/;
-    continue_768: while(0);
-    ((list___ListIterator___next_t)CALL(variable1,COLOR_abstract_collection___Iterator___next))(variable1) /*ListIterator::next*/;
-  }
-  break_768: while(0);
-  variable1 = ATTR_parser_nodes___AReassignFormExpr____n_assign_op( self) /*ABraReassignExpr::_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*/) /*PAssignOp::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AReassignFormExpr____n_assign_op( self) /*ABraReassignExpr::_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) /*ABraReassignExpr::_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*/) /*PExpr::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AReassignFormExpr____n_value( self) /*ABraReassignExpr::_n_value*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
+    /* Register variable[4]: For 'is_ok' result */
+    variable[4] = CALL_abstract_collection___Iterator___is_ok(variable[3])(variable[3]) /*ListIterator::is_ok*/;
+    if (!UNTAG_Bool(variable[4])) break; /*for*/
+    variable[4] = CALL_abstract_collection___Iterator___item(variable[3])(variable[3]) /*ListIterator::item*/ /* Ensure var: For item*/;
+    /* Register variable[5]: Local variable */
+    variable[5] = variable[4];
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/,  variable[5] /*n*/) /*Visitor::visit*/;
+    continue_804: while(0);
+    CALL_abstract_collection___Iterator___next(variable[3])(variable[3]) /*ListIterator::next*/;
+  }
+  break_804: while(0);
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AReassignFormExpr____n_assign_op(variable[0]) /*AReassignFormExpr::_n_assign_op*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AReassignFormExpr____n_assign_op(variable[0]) /*AReassignFormExpr::_n_assign_op*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AReassignFormExpr____n_value(variable[0]) /*AReassignFormExpr::_n_value*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AReassignFormExpr____n_value(variable[0]) /*AReassignFormExpr::_n_value*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  return_label803: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___ABraReassignExpr___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::ABraReassignExpr::visit_all_reverse (src/parser//parser_prod.nit:8859,5--8875:28)"};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___ASendExpr____n_expr( self) /*ABraReassignExpr::_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*/) /*PExpr::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___ASendExpr____n_expr( self) /*ABraReassignExpr::_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) /*ABraReassignExpr::_n_args*/;
-  variable2 = ((list___List___length_t)CALL(variable2,COLOR_abstract_collection___Collection___length))(variable2) /*List::length*/;
-  variable1 = variable2;
+  struct trace_t trace = {NULL, NULL, 9280, LOCATE_parser_prod___ABraReassignExpr___visit_all_reverse};
+  val_t variable[5];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___ASendExpr____n_expr(variable[0]) /*ASendExpr::_n_expr*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___ASendExpr____n_expr(variable[0]) /*ASendExpr::_n_expr*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Local variable */
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___ABraFormExpr____n_args(variable[0]) /*ABraFormExpr::_n_args*/;
+  /* Register variable[4]: Result */
+  variable[4] = CALL_abstract_collection___Collection___length(variable[4])(variable[4]) /*List::length*/;
+  variable[3] = variable[4];
   while (true) { /*while*/
-    variable2 = TAG_Bool(UNTAG_Int( variable1 /*i*/)>=UNTAG_Int( TAG_Int(0)));
-    if (!UNTAG_Bool(variable2)) break; /* while*/
-    variable2 = ATTR_parser_nodes___ABraFormExpr____n_args( self) /*ABraReassignExpr::_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_770: while(0);
-  }
-  break_770: while(0);
-  variable1 = ATTR_parser_nodes___AReassignFormExpr____n_assign_op( self) /*ABraReassignExpr::_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*/) /*PAssignOp::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AReassignFormExpr____n_assign_op( self) /*ABraReassignExpr::_n_assign_op*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(UNTAG_Int( variable[3] /*i*/)>=UNTAG_Int( TAG_Int(0)));
+    if (!UNTAG_Bool(variable[4])) break; /* while*/
+    /* Register variable[4]: Result */
+    variable[4] = ATTR_parser_nodes___ABraFormExpr____n_args(variable[0]) /*ABraFormExpr::_n_args*/;
+    /* Register variable[4]: Result */
+    variable[4] = CALL_abstract_collection___MapRead_____bra(variable[4])(variable[4],  variable[3] /*i*/) /*List::[]*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[4]) /*Visitor::visit*/;
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Int(UNTAG_Int( variable[3] /*i*/)-UNTAG_Int( TAG_Int(1)));
+    variable[3] = variable[4] /*i=*/;
+    continue_806: while(0);
+  }
+  break_806: while(0);
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AReassignFormExpr____n_assign_op(variable[0]) /*AReassignFormExpr::_n_assign_op*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AReassignFormExpr____n_assign_op(variable[0]) /*AReassignFormExpr::_n_assign_op*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AReassignFormExpr____n_value(variable[0]) /*AReassignFormExpr::_n_value*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AReassignFormExpr____n_value(variable[0]) /*AReassignFormExpr::_n_value*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  return_label805: while(false);
+  tracehead = trace.prev;
+  return;
+}
+void parser_prod___ABraReassignExpr___empty_init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 9187, LOCATE_parser_prod___ABraReassignExpr___empty_init};
+  val_t variable[2];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ABraReassignExpr].i]) return;
+  /* Register variable[1]: Method return value and escape marker */
+  return_label807: while(false);
+  init_table[VAL2OBJ(variable[0])->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, 9189, LOCATE_parser_prod___ABraReassignExpr___init_abrareassignexpr};
+  val_t variable[10];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Local variable */
+  variable[2] =  param1;
+  /* Register variable[3]: Local variable */
+  variable[3] =  param2;
+  /* Register variable[4]: Local variable */
+  variable[4] =  param3;
+  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ABraReassignExpr].i]) return;
+  /* Register variable[5]: Method return value and escape marker */
+  CALL_parser_prod___ABraReassignExpr___empty_init(variable[0])(variable[0], init_table /*YYY*/) /*ABraReassignExpr::empty_init*/;
+  ATTR_parser_nodes___ASendExpr____n_expr(variable[0]) /*ASendExpr::_n_expr*/ =  variable[1] /*n_expr*/;
+  /* Register variable[6]: Result */
+  variable[6] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_expr*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_expr*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n_expr*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_expr*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n_expr*/)( variable[1] /*n_expr*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[6])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n_expr*/)( variable[1] /*n_expr*/, variable[0]) /*PNode::parent=*/;
+  }
+  /* Register variable[6]: Result */
+  variable[6] = NEW_List_list___List___init() /*new List[PExpr]*/;
+  ATTR_parser_nodes___ABraFormExpr____n_args(variable[0]) /*ABraFormExpr::_n_args*/ = variable[6];
+  /* Register variable[6]: For iterator */
+  variable[6] = CALL_abstract_collection___Collection___iterator( variable[2] /*n_args*/)( variable[2] /*n_args*/) /*Collection::iterator*/;
+  while (true) { /*for*/
+    /* Register variable[7]: For 'is_ok' result */
+    variable[7] = CALL_abstract_collection___Iterator___is_ok(variable[6])(variable[6]) /*Iterator::is_ok*/;
+    if (!UNTAG_Bool(variable[7])) break; /*for*/
+    variable[7] = CALL_abstract_collection___Iterator___item(variable[6])(variable[6]) /*Iterator::item*/ /* Ensure var: For item*/;
+    /* Register variable[8]: Local variable */
+    variable[8] = variable[7];
+    /* Register variable[9]: Result */
+    variable[9] = TAG_Bool(( variable[8] /*n*/==NIT_NULL) || VAL_ISA( variable[8] /*n*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
+    if (!UNTAG_Bool(variable[9])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ABraReassignExpr___init_abrareassignexpr, LOCATE_parser_prod, 9203); nit_exit(1);}
+    /* Register variable[9]: Result */
+    variable[9] = ATTR_parser_nodes___ABraFormExpr____n_args(variable[0]) /*ABraFormExpr::_n_args*/;
+    CALL_abstract_collection___SimpleCollection___add(variable[9])(variable[9],  variable[8] /*n*/) /*IndexedCollection::add*/;
+    CALL_parser_prod___PNode___parent__eq( variable[8] /*n*/)( variable[8] /*n*/, variable[0]) /*PNode::parent=*/;
+    continue_809: while(0);
+    CALL_abstract_collection___Iterator___next(variable[6])(variable[6]) /*Iterator::next*/;
+  }
+  break_809: while(0);
+  ATTR_parser_nodes___AReassignFormExpr____n_assign_op(variable[0]) /*AReassignFormExpr::_n_assign_op*/ =  variable[3] /*n_assign_op*/;
+  /* Register variable[6]: Result */
+  variable[6] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[3] /*n_assign_op*/ ==  NIT_NULL /*null*/) || (( variable[3] /*n_assign_op*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[3] /*n_assign_op*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[3] /*n_assign_op*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[3] /*n_assign_op*/)( variable[3] /*n_assign_op*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[6])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[3] /*n_assign_op*/)( variable[3] /*n_assign_op*/, variable[0]) /*PNode::parent=*/;
+  }
+  ATTR_parser_nodes___AReassignFormExpr____n_value(variable[0]) /*AReassignFormExpr::_n_value*/ =  variable[4] /*n_value*/;
+  /* Register variable[6]: Result */
+  variable[6] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[4] /*n_value*/ ==  NIT_NULL /*null*/) || (( variable[4] /*n_value*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[4] /*n_value*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[4] /*n_value*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[4] /*n_value*/)( variable[4] /*n_value*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[6])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[4] /*n_value*/)( variable[4] /*n_value*/, variable[0]) /*PNode::parent=*/;
+  }
+  return_label808: while(false);
+  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ABraReassignExpr].i] = 1;
+  tracehead = trace.prev;
+  return;
+}
+void parser_prod___AClosureCallExpr___n_id__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 9301, LOCATE_parser_prod___AClosureCallExpr___n_id__eq};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  ATTR_parser_nodes___AClosureCallExpr____n_id(variable[0]) /*AClosureCallExpr::_n_id*/ =  variable[1] /*n*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[0]) /*PNode::parent=*/;
+  }
+  return_label810: while(false);
+  tracehead = trace.prev;
+  return;
+}
+void parser_prod___AClosureCallExpr___replace_child(val_t  self, val_t  param0, val_t  param1) {
+  struct trace_t trace = {NULL, NULL, 9336, LOCATE_parser_prod___AClosureCallExpr___replace_child};
+  val_t variable[8];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Local variable */
+  variable[2] =  param1;
+  /* Register variable[3]: Method return value and escape marker */
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AClosureCallExpr___replace_child, LOCATE_parser_prod, 9338); nit_exit(1);}
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___AClosureCallExpr____n_id(variable[0]) /*AClosureCallExpr::_n_id*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*PNode::parent=*/;
+      /* Register variable[4]: Result */
+      variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_TId, ID_TId)) /*cast TId*/;
+      if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AClosureCallExpr___replace_child, LOCATE_parser_prod, 9342); nit_exit(1);}
+      ATTR_parser_nodes___AClosureCallExpr____n_id(variable[0]) /*AClosureCallExpr::_n_id*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      ATTR_parser_nodes___AClosureCallExpr____n_id(variable[0]) /*AClosureCallExpr::_n_id*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label811;
   }
-  variable1 = ATTR_parser_nodes___AReassignFormExpr____n_value( self) /*ABraReassignExpr::_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*/) /*PExpr::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AReassignFormExpr____n_value( self) /*ABraReassignExpr::_n_value*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___AClosureCallExpr____n_args(variable[0]) /*AClosureCallExpr::_n_args*/;
+  /* Register variable[4]: Result */
+  variable[4] = CALL_abstract_collection___Collection___length(variable[4])(variable[4]) /*List::length*/;
+  /* Register variable[4]: Result */
+  variable[4] = NEW_Range_range___Range___without_last( TAG_Int(0), variable[4]) /*new Range[Int]*/;
+  /* Register variable[4]: For iterator */
+  variable[4] = CALL_abstract_collection___Collection___iterator(variable[4])(variable[4]) /*Range::iterator*/;
+  while (true) { /*for*/
+    /* Register variable[5]: For 'is_ok' result */
+    variable[5] = CALL_abstract_collection___Iterator___is_ok(variable[4])(variable[4]) /*Iterator::is_ok*/;
+    if (!UNTAG_Bool(variable[5])) break; /*for*/
+    variable[5] = CALL_abstract_collection___Iterator___item(variable[4])(variable[4]) /*Iterator::item*/ /* Ensure var: For item*/;
+    /* Register variable[6]: Local variable */
+    variable[6] = variable[5];
+    /* Register variable[7]: Result */
+    variable[7] = ATTR_parser_nodes___AClosureCallExpr____n_args(variable[0]) /*AClosureCallExpr::_n_args*/;
+    /* Register variable[7]: Result */
+    variable[7] = CALL_abstract_collection___MapRead_____bra(variable[7])(variable[7],  variable[6] /*i*/) /*List::[]*/;
+    /* Register variable[7]: Result */
+    variable[7] = TAG_Bool((variable[7] ==  variable[1] /*old_child*/) || ((variable[7] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[7])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[7], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[7])(variable[7],  variable[1] /*old_child*/) /*Object::==*/)))));
+    if (UNTAG_Bool(variable[7])) { /*if*/
+      /* Register variable[7]: Result */
+      variable[7] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+      if (UNTAG_Bool(variable[7])) { /*if*/
+        /* Register variable[7]: Result */
+        variable[7] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
+        if (!UNTAG_Bool(variable[7])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AClosureCallExpr___replace_child, LOCATE_parser_prod, 9352); nit_exit(1);}
+        /* Register variable[7]: Result */
+        variable[7] = ATTR_parser_nodes___AClosureCallExpr____n_args(variable[0]) /*AClosureCallExpr::_n_args*/;
+        CALL_abstract_collection___Map_____braeq(variable[7])(variable[7],  variable[6] /*i*/,  variable[2] /*new_child*/) /*List::[]=*/;
+        CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*PNode::parent=*/;
+      } else { /*if*/
+        /* Register variable[7]: Result */
+        variable[7] = ATTR_parser_nodes___AClosureCallExpr____n_args(variable[0]) /*AClosureCallExpr::_n_args*/;
+        CALL_abstract_collection___Map___remove_at(variable[7])(variable[7],  variable[6] /*i*/) /*List::remove_at*/;
+      }
+      goto return_label811;
+    }
+    continue_812: while(0);
+    CALL_abstract_collection___Iterator___next(variable[4])(variable[4]) /*Iterator::next*/;
+  }
+  break_812: while(0);
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___AClosureCallExpr____n_closure_defs(variable[0]) /*AClosureCallExpr::_n_closure_defs*/;
+  /* Register variable[4]: Result */
+  variable[4] = CALL_abstract_collection___Collection___length(variable[4])(variable[4]) /*List::length*/;
+  /* Register variable[4]: Result */
+  variable[4] = NEW_Range_range___Range___without_last( TAG_Int(0), variable[4]) /*new Range[Int]*/;
+  /* Register variable[4]: For iterator */
+  variable[4] = CALL_abstract_collection___Collection___iterator(variable[4])(variable[4]) /*Range::iterator*/;
+  while (true) { /*for*/
+    /* Register variable[5]: For 'is_ok' result */
+    variable[5] = CALL_abstract_collection___Iterator___is_ok(variable[4])(variable[4]) /*Iterator::is_ok*/;
+    if (!UNTAG_Bool(variable[5])) break; /*for*/
+    variable[5] = CALL_abstract_collection___Iterator___item(variable[4])(variable[4]) /*Iterator::item*/ /* Ensure var: For item*/;
+    /* Register variable[6]: Local variable */
+    variable[6] = variable[5];
+    /* Register variable[7]: Result */
+    variable[7] = ATTR_parser_nodes___AClosureCallExpr____n_closure_defs(variable[0]) /*AClosureCallExpr::_n_closure_defs*/;
+    /* Register variable[7]: Result */
+    variable[7] = CALL_abstract_collection___MapRead_____bra(variable[7])(variable[7],  variable[6] /*i*/) /*List::[]*/;
+    /* Register variable[7]: Result */
+    variable[7] = TAG_Bool((variable[7] ==  variable[1] /*old_child*/) || ((variable[7] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[7])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[7], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[7])(variable[7],  variable[1] /*old_child*/) /*Object::==*/)))));
+    if (UNTAG_Bool(variable[7])) { /*if*/
+      /* Register variable[7]: Result */
+      variable[7] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+      if (UNTAG_Bool(variable[7])) { /*if*/
+        /* Register variable[7]: Result */
+        variable[7] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PClosureDef, ID_PClosureDef)) /*cast PClosureDef*/;
+        if (!UNTAG_Bool(variable[7])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AClosureCallExpr___replace_child, LOCATE_parser_prod, 9364); nit_exit(1);}
+        /* Register variable[7]: Result */
+        variable[7] = ATTR_parser_nodes___AClosureCallExpr____n_closure_defs(variable[0]) /*AClosureCallExpr::_n_closure_defs*/;
+        CALL_abstract_collection___Map_____braeq(variable[7])(variable[7],  variable[6] /*i*/,  variable[2] /*new_child*/) /*List::[]=*/;
+        CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*PNode::parent=*/;
+      } else { /*if*/
+        /* Register variable[7]: Result */
+        variable[7] = ATTR_parser_nodes___AClosureCallExpr____n_closure_defs(variable[0]) /*AClosureCallExpr::_n_closure_defs*/;
+        CALL_abstract_collection___Map___remove_at(variable[7])(variable[7],  variable[6] /*i*/) /*List::remove_at*/;
+      }
+      goto return_label811;
+    }
+    continue_813: while(0);
+    CALL_abstract_collection___Iterator___next(variable[4])(variable[4]) /*Iterator::next*/;
   }
+  break_813: while(0);
+  return_label811: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AVarExpr___n_id__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AVarExpr::n_id= (src/parser//parser_prod.nit:8880,5--8884:20)"};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  variable0 =  param0;
-  ATTR_parser_nodes___AVarFormExpr____n_id( self) /*AVarExpr::_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*/) /*TId::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*TId::parent=*/;
+void parser_prod___AClosureCallExpr___visit_all(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 9375, LOCATE_parser_prod___AClosureCallExpr___visit_all};
+  val_t variable[6];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AClosureCallExpr____n_id(variable[0]) /*AClosureCallExpr::_n_id*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AClosureCallExpr____n_id(variable[0]) /*AClosureCallExpr::_n_id*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AClosureCallExpr____n_args(variable[0]) /*AClosureCallExpr::_n_args*/;
+  /* Register variable[3]: For iterator */
+  variable[3] = CALL_abstract_collection___Collection___iterator(variable[3])(variable[3]) /*List::iterator*/;
+  while (true) { /*for*/
+    /* Register variable[4]: For 'is_ok' result */
+    variable[4] = CALL_abstract_collection___Iterator___is_ok(variable[3])(variable[3]) /*ListIterator::is_ok*/;
+    if (!UNTAG_Bool(variable[4])) break; /*for*/
+    variable[4] = CALL_abstract_collection___Iterator___item(variable[3])(variable[3]) /*ListIterator::item*/ /* Ensure var: For item*/;
+    /* Register variable[5]: Local variable */
+    variable[5] = variable[4];
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/,  variable[5] /*n*/) /*Visitor::visit*/;
+    continue_815: while(0);
+    CALL_abstract_collection___Iterator___next(variable[3])(variable[3]) /*ListIterator::next*/;
+  }
+  break_815: while(0);
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AClosureCallExpr____n_closure_defs(variable[0]) /*AClosureCallExpr::_n_closure_defs*/;
+  /* Register variable[3]: For iterator */
+  variable[3] = CALL_abstract_collection___Collection___iterator(variable[3])(variable[3]) /*List::iterator*/;
+  while (true) { /*for*/
+    /* Register variable[4]: For 'is_ok' result */
+    variable[4] = CALL_abstract_collection___Iterator___is_ok(variable[3])(variable[3]) /*ListIterator::is_ok*/;
+    if (!UNTAG_Bool(variable[4])) break; /*for*/
+    variable[4] = CALL_abstract_collection___Iterator___item(variable[3])(variable[3]) /*ListIterator::item*/ /* Ensure var: For item*/;
+    /* Register variable[5]: Local variable */
+    variable[5] = variable[4];
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/,  variable[5] /*n*/) /*Visitor::visit*/;
+    continue_816: while(0);
+    CALL_abstract_collection___Iterator___next(variable[3])(variable[3]) /*ListIterator::next*/;
+  }
+  break_816: while(0);
+  return_label814: while(false);
+  tracehead = trace.prev;
+  return;
+}
+void parser_prod___AClosureCallExpr___visit_all_reverse(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 9388, LOCATE_parser_prod___AClosureCallExpr___visit_all_reverse};
+  val_t variable[5];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AClosureCallExpr____n_id(variable[0]) /*AClosureCallExpr::_n_id*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AClosureCallExpr____n_id(variable[0]) /*AClosureCallExpr::_n_id*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Local variable */
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___AClosureCallExpr____n_args(variable[0]) /*AClosureCallExpr::_n_args*/;
+  /* Register variable[4]: Result */
+  variable[4] = CALL_abstract_collection___Collection___length(variable[4])(variable[4]) /*List::length*/;
+  variable[3] = variable[4];
+  while (true) { /*while*/
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(UNTAG_Int( variable[3] /*i*/)>=UNTAG_Int( TAG_Int(0)));
+    if (!UNTAG_Bool(variable[4])) break; /* while*/
+    /* Register variable[4]: Result */
+    variable[4] = ATTR_parser_nodes___AClosureCallExpr____n_args(variable[0]) /*AClosureCallExpr::_n_args*/;
+    /* Register variable[4]: Result */
+    variable[4] = CALL_abstract_collection___MapRead_____bra(variable[4])(variable[4],  variable[3] /*i*/) /*List::[]*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[4]) /*Visitor::visit*/;
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Int(UNTAG_Int( variable[3] /*i*/)-UNTAG_Int( TAG_Int(1)));
+    variable[3] = variable[4] /*i=*/;
+    continue_818: while(0);
   }
+  break_818: while(0);
+  /* Register variable[3]: Local variable */
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___AClosureCallExpr____n_closure_defs(variable[0]) /*AClosureCallExpr::_n_closure_defs*/;
+  /* Register variable[4]: Result */
+  variable[4] = CALL_abstract_collection___Collection___length(variable[4])(variable[4]) /*List::length*/;
+  variable[3] = variable[4];
+  while (true) { /*while*/
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(UNTAG_Int( variable[3] /*i*/)>=UNTAG_Int( TAG_Int(0)));
+    if (!UNTAG_Bool(variable[4])) break; /* while*/
+    /* Register variable[4]: Result */
+    variable[4] = ATTR_parser_nodes___AClosureCallExpr____n_closure_defs(variable[0]) /*AClosureCallExpr::_n_closure_defs*/;
+    /* Register variable[4]: Result */
+    variable[4] = CALL_abstract_collection___MapRead_____bra(variable[4])(variable[4],  variable[3] /*i*/) /*List::[]*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[4]) /*Visitor::visit*/;
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Int(UNTAG_Int( variable[3] /*i*/)-UNTAG_Int( TAG_Int(1)));
+    variable[3] = variable[4] /*i=*/;
+    continue_819: while(0);
+  }
+  break_819: while(0);
+  return_label817: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AVarExpr___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, "parser_prod::AVarExpr::empty_init (src/parser//parser_prod.nit:8888,5--27)"};
-  trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AVarExpr].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AVarExpr].i] = 1;
+void parser_prod___AClosureCallExpr___empty_init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 9309, LOCATE_parser_prod___AClosureCallExpr___empty_init};
+  val_t variable[2];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AClosureCallExpr].i]) return;
+  /* Register variable[1]: Method return value and escape marker */
+  return_label820: while(false);
+  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AClosureCallExpr].i] = 1;
+  tracehead = trace.prev;
+  return;
+}
+void parser_prod___AClosureCallExpr___init_aclosurecallexpr(val_t  self, val_t  param0, val_t  param1, val_t  param2, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 9311, LOCATE_parser_prod___AClosureCallExpr___init_aclosurecallexpr};
+  val_t variable[9];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Local variable */
+  variable[2] =  param1;
+  /* Register variable[3]: Local variable */
+  variable[3] =  param2;
+  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AClosureCallExpr].i]) return;
+  /* Register variable[4]: Method return value and escape marker */
+  CALL_parser_prod___AClosureCallExpr___empty_init(variable[0])(variable[0], init_table /*YYY*/) /*AClosureCallExpr::empty_init*/;
+  ATTR_parser_nodes___AClosureCallExpr____n_id(variable[0]) /*AClosureCallExpr::_n_id*/ =  variable[1] /*n_id*/;
+  /* Register variable[5]: Result */
+  variable[5] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_id*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_id*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n_id*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_id*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n_id*/)( variable[1] /*n_id*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[5])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n_id*/)( variable[1] /*n_id*/, variable[0]) /*PNode::parent=*/;
+  }
+  /* Register variable[5]: Result */
+  variable[5] = NEW_List_list___List___init() /*new List[PExpr]*/;
+  ATTR_parser_nodes___AClosureCallExpr____n_args(variable[0]) /*AClosureCallExpr::_n_args*/ = variable[5];
+  /* Register variable[5]: For iterator */
+  variable[5] = CALL_abstract_collection___Collection___iterator( variable[2] /*n_args*/)( variable[2] /*n_args*/) /*Collection::iterator*/;
+  while (true) { /*for*/
+    /* Register variable[6]: For 'is_ok' result */
+    variable[6] = CALL_abstract_collection___Iterator___is_ok(variable[5])(variable[5]) /*Iterator::is_ok*/;
+    if (!UNTAG_Bool(variable[6])) break; /*for*/
+    variable[6] = CALL_abstract_collection___Iterator___item(variable[5])(variable[5]) /*Iterator::item*/ /* Ensure var: For item*/;
+    /* Register variable[7]: Local variable */
+    variable[7] = variable[6];
+    /* Register variable[8]: Result */
+    variable[8] = TAG_Bool(( variable[7] /*n*/==NIT_NULL) || VAL_ISA( variable[7] /*n*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
+    if (!UNTAG_Bool(variable[8])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AClosureCallExpr___init_aclosurecallexpr, LOCATE_parser_prod, 9324); nit_exit(1);}
+    /* Register variable[8]: Result */
+    variable[8] = ATTR_parser_nodes___AClosureCallExpr____n_args(variable[0]) /*AClosureCallExpr::_n_args*/;
+    CALL_abstract_collection___SimpleCollection___add(variable[8])(variable[8],  variable[7] /*n*/) /*IndexedCollection::add*/;
+    CALL_parser_prod___PNode___parent__eq( variable[7] /*n*/)( variable[7] /*n*/, variable[0]) /*PNode::parent=*/;
+    continue_822: while(0);
+    CALL_abstract_collection___Iterator___next(variable[5])(variable[5]) /*Iterator::next*/;
+  }
+  break_822: while(0);
+  /* Register variable[5]: Result */
+  variable[5] = NEW_List_list___List___init() /*new List[PClosureDef]*/;
+  ATTR_parser_nodes___AClosureCallExpr____n_closure_defs(variable[0]) /*AClosureCallExpr::_n_closure_defs*/ = variable[5];
+  /* Register variable[5]: For iterator */
+  variable[5] = CALL_abstract_collection___Collection___iterator( variable[3] /*n_closure_defs*/)( variable[3] /*n_closure_defs*/) /*Collection::iterator*/;
+  while (true) { /*for*/
+    /* Register variable[6]: For 'is_ok' result */
+    variable[6] = CALL_abstract_collection___Iterator___is_ok(variable[5])(variable[5]) /*Iterator::is_ok*/;
+    if (!UNTAG_Bool(variable[6])) break; /*for*/
+    variable[6] = CALL_abstract_collection___Iterator___item(variable[5])(variable[5]) /*Iterator::item*/ /* Ensure var: For item*/;
+    /* Register variable[7]: Local variable */
+    variable[7] = variable[6];
+    /* Register variable[8]: Result */
+    variable[8] = TAG_Bool(( variable[7] /*n*/==NIT_NULL) || VAL_ISA( variable[7] /*n*/, COLOR_PClosureDef, ID_PClosureDef)) /*cast PClosureDef*/;
+    if (!UNTAG_Bool(variable[8])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AClosureCallExpr___init_aclosurecallexpr, LOCATE_parser_prod, 9330); nit_exit(1);}
+    /* Register variable[8]: Result */
+    variable[8] = ATTR_parser_nodes___AClosureCallExpr____n_closure_defs(variable[0]) /*AClosureCallExpr::_n_closure_defs*/;
+    CALL_abstract_collection___SimpleCollection___add(variable[8])(variable[8],  variable[7] /*n*/) /*IndexedCollection::add*/;
+    CALL_parser_prod___PNode___parent__eq( variable[7] /*n*/)( variable[7] /*n*/, variable[0]) /*PNode::parent=*/;
+    continue_823: while(0);
+    CALL_abstract_collection___Iterator___next(variable[5])(variable[5]) /*Iterator::next*/;
+  }
+  break_823: while(0);
+  return_label821: while(false);
+  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AClosureCallExpr].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, "parser_prod::AVarExpr::init_avarexpr (src/parser//parser_prod.nit:8890,5--8896:20)"};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___AVarExpr___n_id__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 9410, LOCATE_parser_prod___AVarExpr___n_id__eq};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  variable0 =  param0;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AVarExpr].i]) return;
-  ATTR_parser_nodes___AVarFormExpr____n_id( self) /*AVarExpr::_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*/) /*TId::==*/)))))));
-  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) /*TId::parent=*/;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  ATTR_parser_nodes___AVarFormExpr____n_id(variable[0]) /*AVarFormExpr::_n_id*/ =  variable[1] /*n*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[0]) /*PNode::parent=*/;
   }
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AVarExpr].i] = 1;
+  return_label824: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AVarExpr___replace_child(val_t  self, val_t  param0, val_t  param1) {
-  struct trace_t trace = {NULL, "parser_prod::AVarExpr::replace_child (src/parser//parser_prod.nit:8900,5--8911:18)"};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  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*/) /*PNode::==*/)))))));
-  if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert failed: src/parser//parser_prod.nit:8902,9--32\n"); nit_exit(1);}
-  variable2 = ATTR_parser_nodes___AVarFormExpr____n_id( self) /*AVarExpr::_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*/) /*TId::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*PNode::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_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 failed: src/parser//parser_prod.nit:8906,3--26\n"); nit_exit(1);}
-      ATTR_parser_nodes___AVarFormExpr____n_id( self) /*AVarExpr::_n_id*/ =  variable1 /*new_child*/;
+  struct trace_t trace = {NULL, NULL, 9431, LOCATE_parser_prod___AVarExpr___replace_child};
+  val_t variable[5];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Local variable */
+  variable[2] =  param1;
+  /* Register variable[3]: Method return value and escape marker */
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AVarExpr___replace_child, LOCATE_parser_prod, 9433); nit_exit(1);}
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___AVarFormExpr____n_id(variable[0]) /*AVarFormExpr::_n_id*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*PNode::parent=*/;
+      /* Register variable[4]: Result */
+      variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_TId, ID_TId)) /*cast TId*/;
+      if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AVarExpr___replace_child, LOCATE_parser_prod, 9437); nit_exit(1);}
+      ATTR_parser_nodes___AVarFormExpr____n_id(variable[0]) /*AVarFormExpr::_n_id*/ =  variable[2] /*new_child*/;
     } else { /*if*/
-      ATTR_parser_nodes___AVarFormExpr____n_id( self) /*AVarExpr::_n_id*/ =  NIT_NULL /*null*/;
+      ATTR_parser_nodes___AVarFormExpr____n_id(variable[0]) /*AVarFormExpr::_n_id*/ =  NIT_NULL /*null*/;
     }
-    goto return_label774;
+    goto return_label825;
   }
-  return_label774: while(false);
+  return_label825: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AVarExpr___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AVarExpr::visit_all (src/parser//parser_prod.nit:8915,5--8918:25)"};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___AVarFormExpr____n_id( self) /*AVarExpr::_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*/) /*TId::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AVarFormExpr____n_id( self) /*AVarExpr::_n_id*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
+  struct trace_t trace = {NULL, NULL, 9446, LOCATE_parser_prod___AVarExpr___visit_all};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AVarFormExpr____n_id(variable[0]) /*AVarFormExpr::_n_id*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AVarFormExpr____n_id(variable[0]) /*AVarFormExpr::_n_id*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
+  return_label826: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AVarExpr___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AVarExpr::visit_all_reverse (src/parser//parser_prod.nit:8922,5--8925:25)"};
-  val_t variable0;
-  val_t variable1;
+  struct trace_t trace = {NULL, NULL, 9453, LOCATE_parser_prod___AVarExpr___visit_all_reverse};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___AVarFormExpr____n_id( self) /*AVarExpr::_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*/) /*TId::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AVarFormExpr____n_id( self) /*AVarExpr::_n_id*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AVarFormExpr____n_id(variable[0]) /*AVarFormExpr::_n_id*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AVarFormExpr____n_id(variable[0]) /*AVarFormExpr::_n_id*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
+  return_label827: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AVarAssignExpr___n_id__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AVarAssignExpr::n_id= (src/parser//parser_prod.nit:8930,5--8934:20)"};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___AVarExpr___empty_init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 9418, LOCATE_parser_prod___AVarExpr___empty_init};
+  val_t variable[2];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  variable0 =  param0;
-  ATTR_parser_nodes___AVarFormExpr____n_id( self) /*AVarAssignExpr::_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*/) /*TId::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*TId::parent=*/;
-  }
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AVarExpr].i]) return;
+  /* Register variable[1]: Method return value and escape marker */
+  return_label828: while(false);
+  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AVarExpr].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AVarAssignExpr___n_assign__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AVarAssignExpr::n_assign= (src/parser//parser_prod.nit:8937,5--8941:20)"};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___AVarExpr___init_avarexpr(val_t  self, val_t  param0, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 9420, LOCATE_parser_prod___AVarExpr___init_avarexpr};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  variable0 =  param0;
-  ATTR_parser_nodes___AAssignFormExpr____n_assign( self) /*AVarAssignExpr::_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*/) /*TAssign::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*TAssign::parent=*/;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AVarExpr].i]) return;
+  /* Register variable[2]: Method return value and escape marker */
+  CALL_parser_prod___AVarExpr___empty_init(variable[0])(variable[0], init_table /*YYY*/) /*AVarExpr::empty_init*/;
+  ATTR_parser_nodes___AVarFormExpr____n_id(variable[0]) /*AVarFormExpr::_n_id*/ =  variable[1] /*n_id*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_id*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_id*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n_id*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_id*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n_id*/)( variable[1] /*n_id*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n_id*/)( variable[1] /*n_id*/, variable[0]) /*PNode::parent=*/;
   }
+  return_label829: while(false);
+  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AVarExpr].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AVarAssignExpr___n_value__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AVarAssignExpr::n_value= (src/parser//parser_prod.nit:8944,5--8948:20)"};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___AVarAssignExpr___n_id__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 9461, LOCATE_parser_prod___AVarAssignExpr___n_id__eq};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  variable0 =  param0;
-  ATTR_parser_nodes___AAssignFormExpr____n_value( self) /*AVarAssignExpr::_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*/) /*PExpr::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PExpr::parent=*/;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  ATTR_parser_nodes___AVarFormExpr____n_id(variable[0]) /*AVarFormExpr::_n_id*/ =  variable[1] /*n*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[0]) /*PNode::parent=*/;
   }
+  return_label830: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AVarAssignExpr___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, "parser_prod::AVarAssignExpr::empty_init (src/parser//parser_prod.nit:8952,5--27)"};
+void parser_prod___AVarAssignExpr___n_assign__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 9468, LOCATE_parser_prod___AVarAssignExpr___n_assign__eq};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AVarAssignExpr].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AVarAssignExpr].i] = 1;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  ATTR_parser_nodes___AAssignFormExpr____n_assign(variable[0]) /*AAssignFormExpr::_n_assign*/ =  variable[1] /*n*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[0]) /*PNode::parent=*/;
+  }
+  return_label831: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AVarAssignExpr___init_avarassignexpr(val_t  self, val_t  param0, val_t  param1, val_t  param2, int* init_table) {
-  struct trace_t trace = {NULL, "parser_prod::AVarAssignExpr::init_avarassignexpr (src/parser//parser_prod.nit:8954,5--8970:23)"};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  val_t variable3;
+void parser_prod___AVarAssignExpr___n_value__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 9475, LOCATE_parser_prod___AVarAssignExpr___n_value__eq};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  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) /*AVarAssignExpr::_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*/) /*TId::==*/)))))));
-  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) /*TId::parent=*/;
-  }
-  ATTR_parser_nodes___AAssignFormExpr____n_assign( self) /*AVarAssignExpr::_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*/) /*TAssign::==*/)))))));
-  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) /*TAssign::parent=*/;
-  }
-  ATTR_parser_nodes___AAssignFormExpr____n_value( self) /*AVarAssignExpr::_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*/) /*PExpr::==*/)))))));
-  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) /*PExpr::parent=*/;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  ATTR_parser_nodes___AAssignFormExpr____n_value(variable[0]) /*AAssignFormExpr::_n_value*/ =  variable[1] /*n*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[0]) /*PNode::parent=*/;
   }
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AVarAssignExpr].i] = 1;
+  return_label832: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AVarAssignExpr___replace_child(val_t  self, val_t  param0, val_t  param1) {
-  struct trace_t trace = {NULL, "parser_prod::AVarAssignExpr::replace_child (src/parser//parser_prod.nit:8974,5--9005:18)"};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  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*/) /*PNode::==*/)))))));
-  if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert failed: src/parser//parser_prod.nit:8976,9--32\n"); nit_exit(1);}
-  variable2 = ATTR_parser_nodes___AVarFormExpr____n_id( self) /*AVarAssignExpr::_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*/) /*TId::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*PNode::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_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 failed: src/parser//parser_prod.nit:8980,3--26\n"); nit_exit(1);}
-      ATTR_parser_nodes___AVarFormExpr____n_id( self) /*AVarAssignExpr::_n_id*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___AVarFormExpr____n_id( self) /*AVarAssignExpr::_n_id*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label782;
-  }
-  variable2 = ATTR_parser_nodes___AAssignFormExpr____n_assign( self) /*AVarAssignExpr::_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*/) /*TAssign::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*PNode::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_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 failed: src/parser//parser_prod.nit:8990,3--30\n"); nit_exit(1);}
-      ATTR_parser_nodes___AAssignFormExpr____n_assign( self) /*AVarAssignExpr::_n_assign*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___AAssignFormExpr____n_assign( self) /*AVarAssignExpr::_n_assign*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label782;
-  }
-  variable2 = ATTR_parser_nodes___AAssignFormExpr____n_value( self) /*AVarAssignExpr::_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*/) /*PExpr::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*PNode::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_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 failed: src/parser//parser_prod.nit:9000,3--28\n"); nit_exit(1);}
-      ATTR_parser_nodes___AAssignFormExpr____n_value( self) /*AVarAssignExpr::_n_value*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___AAssignFormExpr____n_value( self) /*AVarAssignExpr::_n_value*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label782;
+  struct trace_t trace = {NULL, NULL, 9506, LOCATE_parser_prod___AVarAssignExpr___replace_child};
+  val_t variable[5];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Local variable */
+  variable[2] =  param1;
+  /* Register variable[3]: Method return value and escape marker */
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AVarAssignExpr___replace_child, LOCATE_parser_prod, 9508); nit_exit(1);}
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___AVarFormExpr____n_id(variable[0]) /*AVarFormExpr::_n_id*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*PNode::parent=*/;
+      /* Register variable[4]: Result */
+      variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_TId, ID_TId)) /*cast TId*/;
+      if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AVarAssignExpr___replace_child, LOCATE_parser_prod, 9512); nit_exit(1);}
+      ATTR_parser_nodes___AVarFormExpr____n_id(variable[0]) /*AVarFormExpr::_n_id*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      ATTR_parser_nodes___AVarFormExpr____n_id(variable[0]) /*AVarFormExpr::_n_id*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label833;
+  }
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___AAssignFormExpr____n_assign(variable[0]) /*AAssignFormExpr::_n_assign*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*PNode::parent=*/;
+      /* Register variable[4]: Result */
+      variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_TAssign, ID_TAssign)) /*cast TAssign*/;
+      if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AVarAssignExpr___replace_child, LOCATE_parser_prod, 9522); nit_exit(1);}
+      ATTR_parser_nodes___AAssignFormExpr____n_assign(variable[0]) /*AAssignFormExpr::_n_assign*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      ATTR_parser_nodes___AAssignFormExpr____n_assign(variable[0]) /*AAssignFormExpr::_n_assign*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label833;
+  }
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___AAssignFormExpr____n_value(variable[0]) /*AAssignFormExpr::_n_value*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*PNode::parent=*/;
+      /* Register variable[4]: Result */
+      variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
+      if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AVarAssignExpr___replace_child, LOCATE_parser_prod, 9532); nit_exit(1);}
+      ATTR_parser_nodes___AAssignFormExpr____n_value(variable[0]) /*AAssignFormExpr::_n_value*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      ATTR_parser_nodes___AAssignFormExpr____n_value(variable[0]) /*AAssignFormExpr::_n_value*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label833;
   }
-  return_label782: while(false);
+  return_label833: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AVarAssignExpr___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AVarAssignExpr::visit_all (src/parser//parser_prod.nit:9009,5--9018:28)"};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___AVarFormExpr____n_id( self) /*AVarAssignExpr::_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*/) /*TId::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AVarFormExpr____n_id( self) /*AVarAssignExpr::_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) /*AVarAssignExpr::_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*/) /*TAssign::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AAssignFormExpr____n_assign( self) /*AVarAssignExpr::_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) /*AVarAssignExpr::_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*/) /*PExpr::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AAssignFormExpr____n_value( self) /*AVarAssignExpr::_n_value*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
+  struct trace_t trace = {NULL, NULL, 9541, LOCATE_parser_prod___AVarAssignExpr___visit_all};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AVarFormExpr____n_id(variable[0]) /*AVarFormExpr::_n_id*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AVarFormExpr____n_id(variable[0]) /*AVarFormExpr::_n_id*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AAssignFormExpr____n_assign(variable[0]) /*AAssignFormExpr::_n_assign*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AAssignFormExpr____n_assign(variable[0]) /*AAssignFormExpr::_n_assign*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AAssignFormExpr____n_value(variable[0]) /*AAssignFormExpr::_n_value*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AAssignFormExpr____n_value(variable[0]) /*AAssignFormExpr::_n_value*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  return_label834: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AVarAssignExpr___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AVarAssignExpr::visit_all_reverse (src/parser//parser_prod.nit:9022,5--9031:28)"};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___AVarFormExpr____n_id( self) /*AVarAssignExpr::_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*/) /*TId::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AVarFormExpr____n_id( self) /*AVarAssignExpr::_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) /*AVarAssignExpr::_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*/) /*TAssign::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AAssignFormExpr____n_assign( self) /*AVarAssignExpr::_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) /*AVarAssignExpr::_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*/) /*PExpr::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AAssignFormExpr____n_value( self) /*AVarAssignExpr::_n_value*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
+  struct trace_t trace = {NULL, NULL, 9554, LOCATE_parser_prod___AVarAssignExpr___visit_all_reverse};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AVarFormExpr____n_id(variable[0]) /*AVarFormExpr::_n_id*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AVarFormExpr____n_id(variable[0]) /*AVarFormExpr::_n_id*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AAssignFormExpr____n_assign(variable[0]) /*AAssignFormExpr::_n_assign*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AAssignFormExpr____n_assign(variable[0]) /*AAssignFormExpr::_n_assign*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AAssignFormExpr____n_value(variable[0]) /*AAssignFormExpr::_n_value*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AAssignFormExpr____n_value(variable[0]) /*AAssignFormExpr::_n_value*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  return_label835: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AVarReassignExpr___n_id__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AVarReassignExpr::n_id= (src/parser//parser_prod.nit:9036,5--9040:20)"};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___AVarAssignExpr___empty_init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 9483, LOCATE_parser_prod___AVarAssignExpr___empty_init};
+  val_t variable[2];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  variable0 =  param0;
-  ATTR_parser_nodes___AVarFormExpr____n_id( self) /*AVarReassignExpr::_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*/) /*TId::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*TId::parent=*/;
-  }
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AVarAssignExpr].i]) return;
+  /* Register variable[1]: Method return value and escape marker */
+  return_label836: while(false);
+  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AVarAssignExpr].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AVarReassignExpr___n_assign_op__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AVarReassignExpr::n_assign_op= (src/parser//parser_prod.nit:9043,5--9047:20)"};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  variable0 =  param0;
-  ATTR_parser_nodes___AReassignFormExpr____n_assign_op( self) /*AVarReassignExpr::_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*/) /*PAssignOp::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PAssignOp::parent=*/;
+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, 9485, LOCATE_parser_prod___AVarAssignExpr___init_avarassignexpr};
+  val_t variable[6];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Local variable */
+  variable[2] =  param1;
+  /* Register variable[3]: Local variable */
+  variable[3] =  param2;
+  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AVarAssignExpr].i]) return;
+  /* Register variable[4]: Method return value and escape marker */
+  CALL_parser_prod___AVarAssignExpr___empty_init(variable[0])(variable[0], init_table /*YYY*/) /*AVarAssignExpr::empty_init*/;
+  ATTR_parser_nodes___AVarFormExpr____n_id(variable[0]) /*AVarFormExpr::_n_id*/ =  variable[1] /*n_id*/;
+  /* Register variable[5]: Result */
+  variable[5] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_id*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_id*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n_id*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_id*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n_id*/)( variable[1] /*n_id*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[5])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n_id*/)( variable[1] /*n_id*/, variable[0]) /*PNode::parent=*/;
+  }
+  ATTR_parser_nodes___AAssignFormExpr____n_assign(variable[0]) /*AAssignFormExpr::_n_assign*/ =  variable[2] /*n_assign*/;
+  /* Register variable[5]: Result */
+  variable[5] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*n_assign*/ ==  NIT_NULL /*null*/) || (( variable[2] /*n_assign*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*n_assign*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*n_assign*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*n_assign*/)( variable[2] /*n_assign*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[5])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[2] /*n_assign*/)( variable[2] /*n_assign*/, variable[0]) /*PNode::parent=*/;
+  }
+  ATTR_parser_nodes___AAssignFormExpr____n_value(variable[0]) /*AAssignFormExpr::_n_value*/ =  variable[3] /*n_value*/;
+  /* Register variable[5]: Result */
+  variable[5] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[3] /*n_value*/ ==  NIT_NULL /*null*/) || (( variable[3] /*n_value*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[3] /*n_value*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[3] /*n_value*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[3] /*n_value*/)( variable[3] /*n_value*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[5])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[3] /*n_value*/)( variable[3] /*n_value*/, variable[0]) /*PNode::parent=*/;
   }
+  return_label837: while(false);
+  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AVarAssignExpr].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AVarReassignExpr___n_value__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AVarReassignExpr::n_value= (src/parser//parser_prod.nit:9050,5--9054:20)"};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___AVarReassignExpr___n_id__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 9568, LOCATE_parser_prod___AVarReassignExpr___n_id__eq};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  variable0 =  param0;
-  ATTR_parser_nodes___AReassignFormExpr____n_value( self) /*AVarReassignExpr::_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*/) /*PExpr::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PExpr::parent=*/;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  ATTR_parser_nodes___AVarFormExpr____n_id(variable[0]) /*AVarFormExpr::_n_id*/ =  variable[1] /*n*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[0]) /*PNode::parent=*/;
   }
+  return_label838: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AVarReassignExpr___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, "parser_prod::AVarReassignExpr::empty_init (src/parser//parser_prod.nit:9058,5--27)"};
+void parser_prod___AVarReassignExpr___n_assign_op__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 9575, LOCATE_parser_prod___AVarReassignExpr___n_assign_op__eq};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AVarReassignExpr].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AVarReassignExpr].i] = 1;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  ATTR_parser_nodes___AReassignFormExpr____n_assign_op(variable[0]) /*AReassignFormExpr::_n_assign_op*/ =  variable[1] /*n*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[0]) /*PNode::parent=*/;
+  }
+  return_label839: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AVarReassignExpr___init_avarreassignexpr(val_t  self, val_t  param0, val_t  param1, val_t  param2, int* init_table) {
-  struct trace_t trace = {NULL, "parser_prod::AVarReassignExpr::init_avarreassignexpr (src/parser//parser_prod.nit:9060,5--9076:23)"};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  val_t variable3;
+void parser_prod___AVarReassignExpr___n_value__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 9582, LOCATE_parser_prod___AVarReassignExpr___n_value__eq};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  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) /*AVarReassignExpr::_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*/) /*TId::==*/)))))));
-  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) /*TId::parent=*/;
-  }
-  ATTR_parser_nodes___AReassignFormExpr____n_assign_op( self) /*AVarReassignExpr::_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*/) /*PAssignOp::==*/)))))));
-  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) /*PAssignOp::parent=*/;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  ATTR_parser_nodes___AReassignFormExpr____n_value(variable[0]) /*AReassignFormExpr::_n_value*/ =  variable[1] /*n*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[0]) /*PNode::parent=*/;
   }
-  ATTR_parser_nodes___AReassignFormExpr____n_value( self) /*AVarReassignExpr::_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*/) /*PExpr::==*/)))))));
-  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) /*PExpr::parent=*/;
-  }
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AVarReassignExpr].i] = 1;
+  return_label840: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AVarReassignExpr___replace_child(val_t  self, val_t  param0, val_t  param1) {
-  struct trace_t trace = {NULL, "parser_prod::AVarReassignExpr::replace_child (src/parser//parser_prod.nit:9080,5--9111:18)"};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  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*/) /*PNode::==*/)))))));
-  if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert failed: src/parser//parser_prod.nit:9082,9--32\n"); nit_exit(1);}
-  variable2 = ATTR_parser_nodes___AVarFormExpr____n_id( self) /*AVarReassignExpr::_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*/) /*TId::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*PNode::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_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 failed: src/parser//parser_prod.nit:9086,3--26\n"); nit_exit(1);}
-      ATTR_parser_nodes___AVarFormExpr____n_id( self) /*AVarReassignExpr::_n_id*/ =  variable1 /*new_child*/;
+  struct trace_t trace = {NULL, NULL, 9613, LOCATE_parser_prod___AVarReassignExpr___replace_child};
+  val_t variable[5];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Local variable */
+  variable[2] =  param1;
+  /* Register variable[3]: Method return value and escape marker */
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AVarReassignExpr___replace_child, LOCATE_parser_prod, 9615); nit_exit(1);}
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___AVarFormExpr____n_id(variable[0]) /*AVarFormExpr::_n_id*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*PNode::parent=*/;
+      /* Register variable[4]: Result */
+      variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_TId, ID_TId)) /*cast TId*/;
+      if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AVarReassignExpr___replace_child, LOCATE_parser_prod, 9619); nit_exit(1);}
+      ATTR_parser_nodes___AVarFormExpr____n_id(variable[0]) /*AVarFormExpr::_n_id*/ =  variable[2] /*new_child*/;
     } else { /*if*/
-      ATTR_parser_nodes___AVarFormExpr____n_id( self) /*AVarReassignExpr::_n_id*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label790;
-  }
-  variable2 = ATTR_parser_nodes___AReassignFormExpr____n_assign_op( self) /*AVarReassignExpr::_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*/) /*PAssignOp::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*PNode::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_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 failed: src/parser//parser_prod.nit:9096,3--32\n"); nit_exit(1);}
-      ATTR_parser_nodes___AReassignFormExpr____n_assign_op( self) /*AVarReassignExpr::_n_assign_op*/ =  variable1 /*new_child*/;
+      ATTR_parser_nodes___AVarFormExpr____n_id(variable[0]) /*AVarFormExpr::_n_id*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label841;
+  }
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___AReassignFormExpr____n_assign_op(variable[0]) /*AReassignFormExpr::_n_assign_op*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*PNode::parent=*/;
+      /* Register variable[4]: Result */
+      variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PAssignOp, ID_PAssignOp)) /*cast PAssignOp*/;
+      if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AVarReassignExpr___replace_child, LOCATE_parser_prod, 9629); nit_exit(1);}
+      ATTR_parser_nodes___AReassignFormExpr____n_assign_op(variable[0]) /*AReassignFormExpr::_n_assign_op*/ =  variable[2] /*new_child*/;
     } else { /*if*/
-      ATTR_parser_nodes___AReassignFormExpr____n_assign_op( self) /*AVarReassignExpr::_n_assign_op*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label790;
-  }
-  variable2 = ATTR_parser_nodes___AReassignFormExpr____n_value( self) /*AVarReassignExpr::_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*/) /*PExpr::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*PNode::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_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 failed: src/parser//parser_prod.nit:9106,3--28\n"); nit_exit(1);}
-      ATTR_parser_nodes___AReassignFormExpr____n_value( self) /*AVarReassignExpr::_n_value*/ =  variable1 /*new_child*/;
+      ATTR_parser_nodes___AReassignFormExpr____n_assign_op(variable[0]) /*AReassignFormExpr::_n_assign_op*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label841;
+  }
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___AReassignFormExpr____n_value(variable[0]) /*AReassignFormExpr::_n_value*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*PNode::parent=*/;
+      /* Register variable[4]: Result */
+      variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
+      if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AVarReassignExpr___replace_child, LOCATE_parser_prod, 9639); nit_exit(1);}
+      ATTR_parser_nodes___AReassignFormExpr____n_value(variable[0]) /*AReassignFormExpr::_n_value*/ =  variable[2] /*new_child*/;
     } else { /*if*/
-      ATTR_parser_nodes___AReassignFormExpr____n_value( self) /*AVarReassignExpr::_n_value*/ =  NIT_NULL /*null*/;
+      ATTR_parser_nodes___AReassignFormExpr____n_value(variable[0]) /*AReassignFormExpr::_n_value*/ =  NIT_NULL /*null*/;
     }
-    goto return_label790;
+    goto return_label841;
   }
-  return_label790: while(false);
+  return_label841: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AVarReassignExpr___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AVarReassignExpr::visit_all (src/parser//parser_prod.nit:9115,5--9124:28)"};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___AVarFormExpr____n_id( self) /*AVarReassignExpr::_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*/) /*TId::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AVarFormExpr____n_id( self) /*AVarReassignExpr::_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) /*AVarReassignExpr::_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*/) /*PAssignOp::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AReassignFormExpr____n_assign_op( self) /*AVarReassignExpr::_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) /*AVarReassignExpr::_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*/) /*PExpr::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AReassignFormExpr____n_value( self) /*AVarReassignExpr::_n_value*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
+  struct trace_t trace = {NULL, NULL, 9648, LOCATE_parser_prod___AVarReassignExpr___visit_all};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AVarFormExpr____n_id(variable[0]) /*AVarFormExpr::_n_id*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AVarFormExpr____n_id(variable[0]) /*AVarFormExpr::_n_id*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AReassignFormExpr____n_assign_op(variable[0]) /*AReassignFormExpr::_n_assign_op*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AReassignFormExpr____n_assign_op(variable[0]) /*AReassignFormExpr::_n_assign_op*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AReassignFormExpr____n_value(variable[0]) /*AReassignFormExpr::_n_value*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AReassignFormExpr____n_value(variable[0]) /*AReassignFormExpr::_n_value*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  return_label842: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AVarReassignExpr___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AVarReassignExpr::visit_all_reverse (src/parser//parser_prod.nit:9128,5--9137:28)"};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___AVarFormExpr____n_id( self) /*AVarReassignExpr::_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*/) /*TId::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AVarFormExpr____n_id( self) /*AVarReassignExpr::_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) /*AVarReassignExpr::_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*/) /*PAssignOp::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AReassignFormExpr____n_assign_op( self) /*AVarReassignExpr::_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) /*AVarReassignExpr::_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*/) /*PExpr::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AReassignFormExpr____n_value( self) /*AVarReassignExpr::_n_value*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
+  struct trace_t trace = {NULL, NULL, 9661, LOCATE_parser_prod___AVarReassignExpr___visit_all_reverse};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AVarFormExpr____n_id(variable[0]) /*AVarFormExpr::_n_id*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AVarFormExpr____n_id(variable[0]) /*AVarFormExpr::_n_id*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AReassignFormExpr____n_assign_op(variable[0]) /*AReassignFormExpr::_n_assign_op*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AReassignFormExpr____n_assign_op(variable[0]) /*AReassignFormExpr::_n_assign_op*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AReassignFormExpr____n_value(variable[0]) /*AReassignFormExpr::_n_value*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AReassignFormExpr____n_value(variable[0]) /*AReassignFormExpr::_n_value*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
+  return_label843: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___ARangeExpr___n_expr__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::ARangeExpr::n_expr= (src/parser//parser_prod.nit:9142,5--9146:20)"};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___AVarReassignExpr___empty_init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 9590, LOCATE_parser_prod___AVarReassignExpr___empty_init};
+  val_t variable[2];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  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*/) /*PExpr::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PExpr::parent=*/;
-  }
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AVarReassignExpr].i]) return;
+  /* Register variable[1]: Method return value and escape marker */
+  return_label844: while(false);
+  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AVarReassignExpr].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser_prod___ARangeExpr___n_expr2__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::ARangeExpr::n_expr2= (src/parser//parser_prod.nit:9149,5--9153:20)"};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  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*/) /*PExpr::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PExpr::parent=*/;
-  }
+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, 9592, LOCATE_parser_prod___AVarReassignExpr___init_avarreassignexpr};
+  val_t variable[6];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Local variable */
+  variable[2] =  param1;
+  /* Register variable[3]: Local variable */
+  variable[3] =  param2;
+  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AVarReassignExpr].i]) return;
+  /* Register variable[4]: Method return value and escape marker */
+  CALL_parser_prod___AVarReassignExpr___empty_init(variable[0])(variable[0], init_table /*YYY*/) /*AVarReassignExpr::empty_init*/;
+  ATTR_parser_nodes___AVarFormExpr____n_id(variable[0]) /*AVarFormExpr::_n_id*/ =  variable[1] /*n_id*/;
+  /* Register variable[5]: Result */
+  variable[5] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_id*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_id*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n_id*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_id*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n_id*/)( variable[1] /*n_id*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[5])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n_id*/)( variable[1] /*n_id*/, variable[0]) /*PNode::parent=*/;
+  }
+  ATTR_parser_nodes___AReassignFormExpr____n_assign_op(variable[0]) /*AReassignFormExpr::_n_assign_op*/ =  variable[2] /*n_assign_op*/;
+  /* Register variable[5]: Result */
+  variable[5] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*n_assign_op*/ ==  NIT_NULL /*null*/) || (( variable[2] /*n_assign_op*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*n_assign_op*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*n_assign_op*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*n_assign_op*/)( variable[2] /*n_assign_op*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[5])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[2] /*n_assign_op*/)( variable[2] /*n_assign_op*/, variable[0]) /*PNode::parent=*/;
+  }
+  ATTR_parser_nodes___AReassignFormExpr____n_value(variable[0]) /*AReassignFormExpr::_n_value*/ =  variable[3] /*n_value*/;
+  /* Register variable[5]: Result */
+  variable[5] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[3] /*n_value*/ ==  NIT_NULL /*null*/) || (( variable[3] /*n_value*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[3] /*n_value*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[3] /*n_value*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[3] /*n_value*/)( variable[3] /*n_value*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[5])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[3] /*n_value*/)( variable[3] /*n_value*/, variable[0]) /*PNode::parent=*/;
+  }
+  return_label845: while(false);
+  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AVarReassignExpr].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser_prod___ARangeExpr___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, "parser_prod::ARangeExpr::empty_init (src/parser//parser_prod.nit:9157,5--27)"};
+void parser_prod___ARangeExpr___n_expr__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 9675, LOCATE_parser_prod___ARangeExpr___n_expr__eq};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ARangeExpr].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ARangeExpr].i] = 1;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  ATTR_parser_nodes___ARangeExpr____n_expr(variable[0]) /*ARangeExpr::_n_expr*/ =  variable[1] /*n*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[0]) /*PNode::parent=*/;
+  }
+  return_label846: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___ARangeExpr___init_arangeexpr(val_t  self, val_t  param0, val_t  param1, int* init_table) {
-  struct trace_t trace = {NULL, "parser_prod::ARangeExpr::init_arangeexpr (src/parser//parser_prod.nit:9159,5--9170:23)"};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
+void parser_prod___ARangeExpr___n_expr2__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 9682, LOCATE_parser_prod___ARangeExpr___n_expr2__eq};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  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*/) /*PExpr::==*/)))))));
-  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) /*PExpr::parent=*/;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  ATTR_parser_nodes___ARangeExpr____n_expr2(variable[0]) /*ARangeExpr::_n_expr2*/ =  variable[1] /*n*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[0]) /*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*/) /*PExpr::==*/)))))));
-  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) /*PExpr::parent=*/;
-  }
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ARangeExpr].i] = 1;
+  return_label847: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___ARangeExpr___replace_child(val_t  self, val_t  param0, val_t  param1) {
-  struct trace_t trace = {NULL, "parser_prod::ARangeExpr::replace_child (src/parser//parser_prod.nit:9174,5--9195:18)"};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  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*/) /*PNode::==*/)))))));
-  if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert failed: src/parser//parser_prod.nit:9176,9--32\n"); 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*/) /*PExpr::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*PNode::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_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 failed: src/parser//parser_prod.nit:9180,3--28\n"); nit_exit(1);}
-      ATTR_parser_nodes___ARangeExpr____n_expr( self) /*ARangeExpr::_n_expr*/ =  variable1 /*new_child*/;
+  struct trace_t trace = {NULL, NULL, 9708, LOCATE_parser_prod___ARangeExpr___replace_child};
+  val_t variable[5];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Local variable */
+  variable[2] =  param1;
+  /* Register variable[3]: Method return value and escape marker */
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ARangeExpr___replace_child, LOCATE_parser_prod, 9710); nit_exit(1);}
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___ARangeExpr____n_expr(variable[0]) /*ARangeExpr::_n_expr*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*PNode::parent=*/;
+      /* Register variable[4]: Result */
+      variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
+      if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ARangeExpr___replace_child, LOCATE_parser_prod, 9714); nit_exit(1);}
+      ATTR_parser_nodes___ARangeExpr____n_expr(variable[0]) /*ARangeExpr::_n_expr*/ =  variable[2] /*new_child*/;
     } else { /*if*/
-      ATTR_parser_nodes___ARangeExpr____n_expr( self) /*ARangeExpr::_n_expr*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label797;
-  }
-  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*/) /*PExpr::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*PNode::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_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 failed: src/parser//parser_prod.nit:9190,3--28\n"); nit_exit(1);}
-      ATTR_parser_nodes___ARangeExpr____n_expr2( self) /*ARangeExpr::_n_expr2*/ =  variable1 /*new_child*/;
+      ATTR_parser_nodes___ARangeExpr____n_expr(variable[0]) /*ARangeExpr::_n_expr*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label848;
+  }
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___ARangeExpr____n_expr2(variable[0]) /*ARangeExpr::_n_expr2*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*PNode::parent=*/;
+      /* Register variable[4]: Result */
+      variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
+      if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ARangeExpr___replace_child, LOCATE_parser_prod, 9724); nit_exit(1);}
+      ATTR_parser_nodes___ARangeExpr____n_expr2(variable[0]) /*ARangeExpr::_n_expr2*/ =  variable[2] /*new_child*/;
     } else { /*if*/
-      ATTR_parser_nodes___ARangeExpr____n_expr2( self) /*ARangeExpr::_n_expr2*/ =  NIT_NULL /*null*/;
+      ATTR_parser_nodes___ARangeExpr____n_expr2(variable[0]) /*ARangeExpr::_n_expr2*/ =  NIT_NULL /*null*/;
     }
-    goto return_label797;
+    goto return_label848;
   }
-  return_label797: while(false);
+  return_label848: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___ARangeExpr___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::ARangeExpr::visit_all (src/parser//parser_prod.nit:9199,5--9205:28)"};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  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*/) /*PExpr::==*/)))))));
-  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*/) /*PExpr::==*/)))))));
-  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*/;
+  struct trace_t trace = {NULL, NULL, 9733, LOCATE_parser_prod___ARangeExpr___visit_all};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___ARangeExpr____n_expr(variable[0]) /*ARangeExpr::_n_expr*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___ARangeExpr____n_expr(variable[0]) /*ARangeExpr::_n_expr*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___ARangeExpr____n_expr2(variable[0]) /*ARangeExpr::_n_expr2*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___ARangeExpr____n_expr2(variable[0]) /*ARangeExpr::_n_expr2*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
+  return_label849: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___ARangeExpr___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::ARangeExpr::visit_all_reverse (src/parser//parser_prod.nit:9209,5--9215:28)"};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  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*/) /*PExpr::==*/)))))));
-  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*/) /*PExpr::==*/)))))));
-  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*/;
-  }
+  struct trace_t trace = {NULL, NULL, 9743, LOCATE_parser_prod___ARangeExpr___visit_all_reverse};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___ARangeExpr____n_expr(variable[0]) /*ARangeExpr::_n_expr*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___ARangeExpr____n_expr(variable[0]) /*ARangeExpr::_n_expr*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___ARangeExpr____n_expr2(variable[0]) /*ARangeExpr::_n_expr2*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___ARangeExpr____n_expr2(variable[0]) /*ARangeExpr::_n_expr2*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  return_label850: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___ACrangeExpr___n_expr__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::ACrangeExpr::n_expr= (src/parser//parser_prod.nit:9220,5--9224:20)"};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___ARangeExpr___empty_init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 9690, LOCATE_parser_prod___ARangeExpr___empty_init};
+  val_t variable[2];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  variable0 =  param0;
-  ATTR_parser_nodes___ARangeExpr____n_expr( self) /*ACrangeExpr::_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*/) /*PExpr::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PExpr::parent=*/;
-  }
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ARangeExpr].i]) return;
+  /* Register variable[1]: Method return value and escape marker */
+  return_label851: while(false);
+  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ARangeExpr].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser_prod___ACrangeExpr___n_expr2__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::ACrangeExpr::n_expr2= (src/parser//parser_prod.nit:9227,5--9231:20)"};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  variable0 =  param0;
-  ATTR_parser_nodes___ARangeExpr____n_expr2( self) /*ACrangeExpr::_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*/) /*PExpr::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PExpr::parent=*/;
-  }
+void parser_prod___ARangeExpr___init_arangeexpr(val_t  self, val_t  param0, val_t  param1, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 9692, LOCATE_parser_prod___ARangeExpr___init_arangeexpr};
+  val_t variable[5];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Local variable */
+  variable[2] =  param1;
+  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ARangeExpr].i]) return;
+  /* Register variable[3]: Method return value and escape marker */
+  CALL_parser_prod___ARangeExpr___empty_init(variable[0])(variable[0], init_table /*YYY*/) /*ARangeExpr::empty_init*/;
+  ATTR_parser_nodes___ARangeExpr____n_expr(variable[0]) /*ARangeExpr::_n_expr*/ =  variable[1] /*n_expr*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_expr*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_expr*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n_expr*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_expr*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n_expr*/)( variable[1] /*n_expr*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n_expr*/)( variable[1] /*n_expr*/, variable[0]) /*PNode::parent=*/;
+  }
+  ATTR_parser_nodes___ARangeExpr____n_expr2(variable[0]) /*ARangeExpr::_n_expr2*/ =  variable[2] /*n_expr2*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*n_expr2*/ ==  NIT_NULL /*null*/) || (( variable[2] /*n_expr2*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*n_expr2*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*n_expr2*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*n_expr2*/)( variable[2] /*n_expr2*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[2] /*n_expr2*/)( variable[2] /*n_expr2*/, variable[0]) /*PNode::parent=*/;
+  }
+  return_label852: while(false);
+  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ARangeExpr].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser_prod___ACrangeExpr___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, "parser_prod::ACrangeExpr::empty_init (src/parser//parser_prod.nit:9235,5--27)"};
+void parser_prod___ACrangeExpr___n_expr__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 9754, LOCATE_parser_prod___ACrangeExpr___n_expr__eq};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  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;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  ATTR_parser_nodes___ARangeExpr____n_expr(variable[0]) /*ARangeExpr::_n_expr*/ =  variable[1] /*n*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[0]) /*PNode::parent=*/;
+  }
+  return_label853: while(false);
   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, "parser_prod::ACrangeExpr::init_acrangeexpr (src/parser//parser_prod.nit:9237,5--9248:23)"};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
+void parser_prod___ACrangeExpr___n_expr2__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 9761, LOCATE_parser_prod___ACrangeExpr___n_expr2__eq};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  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) /*ACrangeExpr::_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*/) /*PExpr::==*/)))))));
-  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) /*PExpr::parent=*/;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  ATTR_parser_nodes___ARangeExpr____n_expr2(variable[0]) /*ARangeExpr::_n_expr2*/ =  variable[1] /*n*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[0]) /*PNode::parent=*/;
   }
-  ATTR_parser_nodes___ARangeExpr____n_expr2( self) /*ACrangeExpr::_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*/) /*PExpr::==*/)))))));
-  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) /*PExpr::parent=*/;
-  }
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ACrangeExpr].i] = 1;
+  return_label854: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___ACrangeExpr___replace_child(val_t  self, val_t  param0, val_t  param1) {
-  struct trace_t trace = {NULL, "parser_prod::ACrangeExpr::replace_child (src/parser//parser_prod.nit:9252,5--9273:18)"};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  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*/) /*PNode::==*/)))))));
-  if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert failed: src/parser//parser_prod.nit:9254,9--32\n"); nit_exit(1);}
-  variable2 = ATTR_parser_nodes___ARangeExpr____n_expr( self) /*ACrangeExpr::_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*/) /*PExpr::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*PNode::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_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 failed: src/parser//parser_prod.nit:9258,3--28\n"); nit_exit(1);}
-      ATTR_parser_nodes___ARangeExpr____n_expr( self) /*ACrangeExpr::_n_expr*/ =  variable1 /*new_child*/;
+  struct trace_t trace = {NULL, NULL, 9787, LOCATE_parser_prod___ACrangeExpr___replace_child};
+  val_t variable[5];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Local variable */
+  variable[2] =  param1;
+  /* Register variable[3]: Method return value and escape marker */
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ACrangeExpr___replace_child, LOCATE_parser_prod, 9789); nit_exit(1);}
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___ARangeExpr____n_expr(variable[0]) /*ARangeExpr::_n_expr*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*PNode::parent=*/;
+      /* Register variable[4]: Result */
+      variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
+      if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ACrangeExpr___replace_child, LOCATE_parser_prod, 9793); nit_exit(1);}
+      ATTR_parser_nodes___ARangeExpr____n_expr(variable[0]) /*ARangeExpr::_n_expr*/ =  variable[2] /*new_child*/;
     } else { /*if*/
-      ATTR_parser_nodes___ARangeExpr____n_expr( self) /*ACrangeExpr::_n_expr*/ =  NIT_NULL /*null*/;
+      ATTR_parser_nodes___ARangeExpr____n_expr(variable[0]) /*ARangeExpr::_n_expr*/ =  NIT_NULL /*null*/;
     }
-    goto return_label804;
+    goto return_label855;
   }
-  variable2 = ATTR_parser_nodes___ARangeExpr____n_expr2( self) /*ACrangeExpr::_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*/) /*PExpr::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*PNode::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_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 failed: src/parser//parser_prod.nit:9268,3--28\n"); nit_exit(1);}
-      ATTR_parser_nodes___ARangeExpr____n_expr2( self) /*ACrangeExpr::_n_expr2*/ =  variable1 /*new_child*/;
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___ARangeExpr____n_expr2(variable[0]) /*ARangeExpr::_n_expr2*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*PNode::parent=*/;
+      /* Register variable[4]: Result */
+      variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
+      if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ACrangeExpr___replace_child, LOCATE_parser_prod, 9803); nit_exit(1);}
+      ATTR_parser_nodes___ARangeExpr____n_expr2(variable[0]) /*ARangeExpr::_n_expr2*/ =  variable[2] /*new_child*/;
     } else { /*if*/
-      ATTR_parser_nodes___ARangeExpr____n_expr2( self) /*ACrangeExpr::_n_expr2*/ =  NIT_NULL /*null*/;
+      ATTR_parser_nodes___ARangeExpr____n_expr2(variable[0]) /*ARangeExpr::_n_expr2*/ =  NIT_NULL /*null*/;
     }
-    goto return_label804;
+    goto return_label855;
   }
-  return_label804: while(false);
+  return_label855: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___ACrangeExpr___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::ACrangeExpr::visit_all (src/parser//parser_prod.nit:9277,5--9283:28)"};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___ARangeExpr____n_expr( self) /*ACrangeExpr::_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*/) /*PExpr::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___ARangeExpr____n_expr( self) /*ACrangeExpr::_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) /*ACrangeExpr::_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*/) /*PExpr::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___ARangeExpr____n_expr2( self) /*ACrangeExpr::_n_expr2*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
+  struct trace_t trace = {NULL, NULL, 9812, LOCATE_parser_prod___ACrangeExpr___visit_all};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___ARangeExpr____n_expr(variable[0]) /*ARangeExpr::_n_expr*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___ARangeExpr____n_expr(variable[0]) /*ARangeExpr::_n_expr*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___ARangeExpr____n_expr2(variable[0]) /*ARangeExpr::_n_expr2*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___ARangeExpr____n_expr2(variable[0]) /*ARangeExpr::_n_expr2*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  return_label856: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___ACrangeExpr___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::ACrangeExpr::visit_all_reverse (src/parser//parser_prod.nit:9287,5--9293:28)"};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___ARangeExpr____n_expr( self) /*ACrangeExpr::_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*/) /*PExpr::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___ARangeExpr____n_expr( self) /*ACrangeExpr::_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) /*ACrangeExpr::_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*/) /*PExpr::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___ARangeExpr____n_expr2( self) /*ACrangeExpr::_n_expr2*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
+  struct trace_t trace = {NULL, NULL, 9822, LOCATE_parser_prod___ACrangeExpr___visit_all_reverse};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___ARangeExpr____n_expr(variable[0]) /*ARangeExpr::_n_expr*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___ARangeExpr____n_expr(variable[0]) /*ARangeExpr::_n_expr*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___ARangeExpr____n_expr2(variable[0]) /*ARangeExpr::_n_expr2*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___ARangeExpr____n_expr2(variable[0]) /*ARangeExpr::_n_expr2*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  return_label857: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AOrangeExpr___n_expr__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AOrangeExpr::n_expr= (src/parser//parser_prod.nit:9298,5--9302:20)"};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___ACrangeExpr___empty_init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 9769, LOCATE_parser_prod___ACrangeExpr___empty_init};
+  val_t variable[2];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  variable0 =  param0;
-  ATTR_parser_nodes___ARangeExpr____n_expr( self) /*AOrangeExpr::_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*/) /*PExpr::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PExpr::parent=*/;
-  }
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ACrangeExpr].i]) return;
+  /* Register variable[1]: Method return value and escape marker */
+  return_label858: while(false);
+  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ACrangeExpr].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AOrangeExpr___n_expr2__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AOrangeExpr::n_expr2= (src/parser//parser_prod.nit:9305,5--9309:20)"};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  variable0 =  param0;
-  ATTR_parser_nodes___ARangeExpr____n_expr2( self) /*AOrangeExpr::_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*/) /*PExpr::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PExpr::parent=*/;
-  }
+void parser_prod___ACrangeExpr___init_acrangeexpr(val_t  self, val_t  param0, val_t  param1, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 9771, LOCATE_parser_prod___ACrangeExpr___init_acrangeexpr};
+  val_t variable[5];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Local variable */
+  variable[2] =  param1;
+  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ACrangeExpr].i]) return;
+  /* Register variable[3]: Method return value and escape marker */
+  CALL_parser_prod___ACrangeExpr___empty_init(variable[0])(variable[0], init_table /*YYY*/) /*ACrangeExpr::empty_init*/;
+  ATTR_parser_nodes___ARangeExpr____n_expr(variable[0]) /*ARangeExpr::_n_expr*/ =  variable[1] /*n_expr*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_expr*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_expr*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n_expr*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_expr*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n_expr*/)( variable[1] /*n_expr*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n_expr*/)( variable[1] /*n_expr*/, variable[0]) /*PNode::parent=*/;
+  }
+  ATTR_parser_nodes___ARangeExpr____n_expr2(variable[0]) /*ARangeExpr::_n_expr2*/ =  variable[2] /*n_expr2*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*n_expr2*/ ==  NIT_NULL /*null*/) || (( variable[2] /*n_expr2*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*n_expr2*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*n_expr2*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*n_expr2*/)( variable[2] /*n_expr2*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[2] /*n_expr2*/)( variable[2] /*n_expr2*/, variable[0]) /*PNode::parent=*/;
+  }
+  return_label859: while(false);
+  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ACrangeExpr].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AOrangeExpr___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, "parser_prod::AOrangeExpr::empty_init (src/parser//parser_prod.nit:9313,5--27)"};
+void parser_prod___AOrangeExpr___n_expr__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 9833, LOCATE_parser_prod___AOrangeExpr___n_expr__eq};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  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;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  ATTR_parser_nodes___ARangeExpr____n_expr(variable[0]) /*ARangeExpr::_n_expr*/ =  variable[1] /*n*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[0]) /*PNode::parent=*/;
+  }
+  return_label860: while(false);
   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, "parser_prod::AOrangeExpr::init_aorangeexpr (src/parser//parser_prod.nit:9315,5--9326:23)"};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  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) /*AOrangeExpr::_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*/) /*PExpr::==*/)))))));
-  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) /*PExpr::parent=*/;
-  }
-  ATTR_parser_nodes___ARangeExpr____n_expr2( self) /*AOrangeExpr::_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*/) /*PExpr::==*/)))))));
-  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) /*PExpr::parent=*/;
+void parser_prod___AOrangeExpr___n_expr2__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 9840, LOCATE_parser_prod___AOrangeExpr___n_expr2__eq};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  ATTR_parser_nodes___ARangeExpr____n_expr2(variable[0]) /*ARangeExpr::_n_expr2*/ =  variable[1] /*n*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[0]) /*PNode::parent=*/;
   }
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AOrangeExpr].i] = 1;
+  return_label861: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AOrangeExpr___replace_child(val_t  self, val_t  param0, val_t  param1) {
-  struct trace_t trace = {NULL, "parser_prod::AOrangeExpr::replace_child (src/parser//parser_prod.nit:9330,5--9351:18)"};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  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*/) /*PNode::==*/)))))));
-  if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert failed: src/parser//parser_prod.nit:9332,9--32\n"); nit_exit(1);}
-  variable2 = ATTR_parser_nodes___ARangeExpr____n_expr( self) /*AOrangeExpr::_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*/) /*PExpr::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*PNode::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_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 failed: src/parser//parser_prod.nit:9336,3--28\n"); nit_exit(1);}
-      ATTR_parser_nodes___ARangeExpr____n_expr( self) /*AOrangeExpr::_n_expr*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___ARangeExpr____n_expr( self) /*AOrangeExpr::_n_expr*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label811;
-  }
-  variable2 = ATTR_parser_nodes___ARangeExpr____n_expr2( self) /*AOrangeExpr::_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*/) /*PExpr::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*PNode::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_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 failed: src/parser//parser_prod.nit:9346,3--28\n"); nit_exit(1);}
-      ATTR_parser_nodes___ARangeExpr____n_expr2( self) /*AOrangeExpr::_n_expr2*/ =  variable1 /*new_child*/;
+  struct trace_t trace = {NULL, NULL, 9866, LOCATE_parser_prod___AOrangeExpr___replace_child};
+  val_t variable[5];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Local variable */
+  variable[2] =  param1;
+  /* Register variable[3]: Method return value and escape marker */
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AOrangeExpr___replace_child, LOCATE_parser_prod, 9868); nit_exit(1);}
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___ARangeExpr____n_expr(variable[0]) /*ARangeExpr::_n_expr*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*PNode::parent=*/;
+      /* Register variable[4]: Result */
+      variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
+      if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AOrangeExpr___replace_child, LOCATE_parser_prod, 9872); nit_exit(1);}
+      ATTR_parser_nodes___ARangeExpr____n_expr(variable[0]) /*ARangeExpr::_n_expr*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      ATTR_parser_nodes___ARangeExpr____n_expr(variable[0]) /*ARangeExpr::_n_expr*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label862;
+  }
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___ARangeExpr____n_expr2(variable[0]) /*ARangeExpr::_n_expr2*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*PNode::parent=*/;
+      /* Register variable[4]: Result */
+      variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
+      if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AOrangeExpr___replace_child, LOCATE_parser_prod, 9882); nit_exit(1);}
+      ATTR_parser_nodes___ARangeExpr____n_expr2(variable[0]) /*ARangeExpr::_n_expr2*/ =  variable[2] /*new_child*/;
     } else { /*if*/
-      ATTR_parser_nodes___ARangeExpr____n_expr2( self) /*AOrangeExpr::_n_expr2*/ =  NIT_NULL /*null*/;
+      ATTR_parser_nodes___ARangeExpr____n_expr2(variable[0]) /*ARangeExpr::_n_expr2*/ =  NIT_NULL /*null*/;
     }
-    goto return_label811;
+    goto return_label862;
   }
-  return_label811: while(false);
+  return_label862: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AOrangeExpr___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AOrangeExpr::visit_all (src/parser//parser_prod.nit:9355,5--9361:28)"};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___ARangeExpr____n_expr( self) /*AOrangeExpr::_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*/) /*PExpr::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___ARangeExpr____n_expr( self) /*AOrangeExpr::_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) /*AOrangeExpr::_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*/) /*PExpr::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___ARangeExpr____n_expr2( self) /*AOrangeExpr::_n_expr2*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
+  struct trace_t trace = {NULL, NULL, 9891, LOCATE_parser_prod___AOrangeExpr___visit_all};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___ARangeExpr____n_expr(variable[0]) /*ARangeExpr::_n_expr*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___ARangeExpr____n_expr(variable[0]) /*ARangeExpr::_n_expr*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___ARangeExpr____n_expr2(variable[0]) /*ARangeExpr::_n_expr2*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___ARangeExpr____n_expr2(variable[0]) /*ARangeExpr::_n_expr2*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  return_label863: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AOrangeExpr___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AOrangeExpr::visit_all_reverse (src/parser//parser_prod.nit:9365,5--9371:28)"};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___ARangeExpr____n_expr( self) /*AOrangeExpr::_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*/) /*PExpr::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___ARangeExpr____n_expr( self) /*AOrangeExpr::_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) /*AOrangeExpr::_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*/) /*PExpr::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___ARangeExpr____n_expr2( self) /*AOrangeExpr::_n_expr2*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
+  struct trace_t trace = {NULL, NULL, 9901, LOCATE_parser_prod___AOrangeExpr___visit_all_reverse};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___ARangeExpr____n_expr(variable[0]) /*ARangeExpr::_n_expr*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___ARangeExpr____n_expr(variable[0]) /*ARangeExpr::_n_expr*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___ARangeExpr____n_expr2(variable[0]) /*ARangeExpr::_n_expr2*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___ARangeExpr____n_expr2(variable[0]) /*ARangeExpr::_n_expr2*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  return_label864: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AArrayExpr___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, "parser_prod::AArrayExpr::empty_init (src/parser//parser_prod.nit:9377,5--27)"};
+void parser_prod___AOrangeExpr___empty_init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 9848, LOCATE_parser_prod___AOrangeExpr___empty_init};
+  val_t variable[2];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  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, "parser_prod::AArrayExpr::init_aarrayexpr (src/parser//parser_prod.nit:9379,5--9387:17)"};
-  val_t variable0;
-  val_t variable1;
-    val_t variable2;
-    val_t variable3;
-  trace.prev = tracehead; tracehead = &trace;
-  variable0 =  param0;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AArrayExpr].i]) return;
-  variable1 = NEW_list___List___init(); /*new List[PExpr]*/
-  ATTR_parser_nodes___AArrayExpr____n_exprs( self) /*AArrayExpr::_n_exprs*/ = variable1;
-  variable1 = ((array___AbstractArray___iterator_t)CALL( variable0 /*n_exprs*/,COLOR_abstract_collection___Collection___iterator))( variable0 /*n_exprs*/) /*Array::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 failed: src/parser//parser_prod.nit:9385,3--20\n"); 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*/) /*List::add*/;
-    ((parser_prod___PNode___parent__eq_t)CALL( variable2 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable2 /*n*/,  self) /*PExpr::parent=*/;
-    continue_816: while(0);
-    ((array___ArrayIterator___next_t)CALL(variable1,COLOR_abstract_collection___Iterator___next))(variable1) /*ArrayIterator::next*/;
-  }
-  break_816: while(0);
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AArrayExpr].i] = 1;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AOrangeExpr].i]) return;
+  /* Register variable[1]: Method return value and escape marker */
+  return_label865: while(false);
+  init_table[VAL2OBJ(variable[0])->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, 9850, LOCATE_parser_prod___AOrangeExpr___init_aorangeexpr};
+  val_t variable[5];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Local variable */
+  variable[2] =  param1;
+  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AOrangeExpr].i]) return;
+  /* Register variable[3]: Method return value and escape marker */
+  CALL_parser_prod___AOrangeExpr___empty_init(variable[0])(variable[0], init_table /*YYY*/) /*AOrangeExpr::empty_init*/;
+  ATTR_parser_nodes___ARangeExpr____n_expr(variable[0]) /*ARangeExpr::_n_expr*/ =  variable[1] /*n_expr*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_expr*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_expr*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n_expr*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_expr*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n_expr*/)( variable[1] /*n_expr*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n_expr*/)( variable[1] /*n_expr*/, variable[0]) /*PNode::parent=*/;
+  }
+  ATTR_parser_nodes___ARangeExpr____n_expr2(variable[0]) /*ARangeExpr::_n_expr2*/ =  variable[2] /*n_expr2*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*n_expr2*/ ==  NIT_NULL /*null*/) || (( variable[2] /*n_expr2*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*n_expr2*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*n_expr2*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*n_expr2*/)( variable[2] /*n_expr2*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[2] /*n_expr2*/)( variable[2] /*n_expr2*/, variable[0]) /*PNode::parent=*/;
+  }
+  return_label866: while(false);
+  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AOrangeExpr].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, "parser_prod::AArrayExpr::replace_child (src/parser//parser_prod.nit:9391,5--9403:22)"};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  val_t variable3;
-    val_t variable4;
-  trace.prev = tracehead; tracehead = &trace;
-  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*/) /*PNode::==*/)))))));
-  if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert failed: src/parser//parser_prod.nit:9393,9--32\n"); 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[Int]*/
-  variable2 = variable3;
-  variable2 = ((range___Range___iterator_t)CALL(variable2,COLOR_abstract_collection___Collection___iterator))(variable2) /*Range::iterator*/;
+  struct trace_t trace = {NULL, NULL, 9928, LOCATE_parser_prod___AArrayExpr___replace_child};
+  val_t variable[8];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Local variable */
+  variable[2] =  param1;
+  /* Register variable[3]: Method return value and escape marker */
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AArrayExpr___replace_child, LOCATE_parser_prod, 9930); nit_exit(1);}
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___AArrayExpr____n_exprs(variable[0]) /*AArrayExpr::_n_exprs*/;
+  /* Register variable[4]: Result */
+  variable[4] = CALL_abstract_collection___Collection___length(variable[4])(variable[4]) /*List::length*/;
+  /* Register variable[4]: Result */
+  variable[4] = NEW_Range_range___Range___without_last( TAG_Int(0), variable[4]) /*new Range[Int]*/;
+  /* Register variable[4]: For iterator */
+  variable[4] = CALL_abstract_collection___Collection___iterator(variable[4])(variable[4]) /*Range::iterator*/;
   while (true) { /*for*/
-    variable3 = ((abstract_collection___Iterator___is_ok_t)CALL(variable2,COLOR_abstract_collection___Iterator___is_ok))(variable2) /*Iterator::is_ok*/;
-    if (!UNTAG_Bool(variable3)) break; /*for*/
-    variable3 = ((abstract_collection___Iterator___item_t)CALL(variable2,COLOR_abstract_collection___Iterator___item))(variable2) /*Iterator::item*/;
-    variable4 = ATTR_parser_nodes___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*/) /*PExpr::==*/)))));
-    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*/) /*PNode::==*/)))))));
-      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 failed: src/parser//parser_prod.nit:9397,7--32\n"); 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) /*PExpr::parent=*/;
+    /* Register variable[5]: For 'is_ok' result */
+    variable[5] = CALL_abstract_collection___Iterator___is_ok(variable[4])(variable[4]) /*Iterator::is_ok*/;
+    if (!UNTAG_Bool(variable[5])) break; /*for*/
+    variable[5] = CALL_abstract_collection___Iterator___item(variable[4])(variable[4]) /*Iterator::item*/ /* Ensure var: For item*/;
+    /* Register variable[6]: Local variable */
+    variable[6] = variable[5];
+    /* Register variable[7]: Result */
+    variable[7] = ATTR_parser_nodes___AArrayExpr____n_exprs(variable[0]) /*AArrayExpr::_n_exprs*/;
+    /* Register variable[7]: Result */
+    variable[7] = CALL_abstract_collection___MapRead_____bra(variable[7])(variable[7],  variable[6] /*i*/) /*List::[]*/;
+    /* Register variable[7]: Result */
+    variable[7] = TAG_Bool((variable[7] ==  variable[1] /*old_child*/) || ((variable[7] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[7])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[7], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[7])(variable[7],  variable[1] /*old_child*/) /*Object::==*/)))));
+    if (UNTAG_Bool(variable[7])) { /*if*/
+      /* Register variable[7]: Result */
+      variable[7] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+      if (UNTAG_Bool(variable[7])) { /*if*/
+        /* Register variable[7]: Result */
+        variable[7] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
+        if (!UNTAG_Bool(variable[7])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AArrayExpr___replace_child, LOCATE_parser_prod, 9934); nit_exit(1);}
+        /* Register variable[7]: Result */
+        variable[7] = ATTR_parser_nodes___AArrayExpr____n_exprs(variable[0]) /*AArrayExpr::_n_exprs*/;
+        CALL_abstract_collection___Map_____braeq(variable[7])(variable[7],  variable[6] /*i*/,  variable[2] /*new_child*/) /*List::[]=*/;
+        CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*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*/;
+        /* Register variable[7]: Result */
+        variable[7] = ATTR_parser_nodes___AArrayExpr____n_exprs(variable[0]) /*AArrayExpr::_n_exprs*/;
+        CALL_abstract_collection___Map___remove_at(variable[7])(variable[7],  variable[6] /*i*/) /*List::remove_at*/;
       }
-      goto return_label817;
+      goto return_label867;
     }
-    continue_818: while(0);
-    ((abstract_collection___Iterator___next_t)CALL(variable2,COLOR_abstract_collection___Iterator___next))(variable2) /*Iterator::next*/;
+    continue_868: while(0);
+    CALL_abstract_collection___Iterator___next(variable[4])(variable[4]) /*Iterator::next*/;
   }
-  break_818: while(0);
-  return_label817: while(false);
+  break_868: while(0);
+  return_label867: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AArrayExpr___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AArrayExpr::visit_all (src/parser//parser_prod.nit:9408,5--9411:25)"};
-  val_t variable0;
-  val_t variable1;
-    val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  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*/;
+  struct trace_t trace = {NULL, NULL, 9945, LOCATE_parser_prod___AArrayExpr___visit_all};
+  val_t variable[6];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AArrayExpr____n_exprs(variable[0]) /*AArrayExpr::_n_exprs*/;
+  /* Register variable[3]: For iterator */
+  variable[3] = CALL_abstract_collection___Collection___iterator(variable[3])(variable[3]) /*List::iterator*/;
   while (true) { /*for*/
-    variable2 = ((list___ListIterator___is_ok_t)CALL(variable1,COLOR_abstract_collection___Iterator___is_ok))(variable1) /*ListIterator::is_ok*/;
-    if (!UNTAG_Bool(variable2)) break; /*for*/
-    variable2 = ((list___ListIterator___item_t)CALL(variable1,COLOR_abstract_collection___Iterator___item))(variable1) /*ListIterator::item*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/,  variable2 /*n*/) /*Visitor::visit*/;
-    continue_820: while(0);
-    ((list___ListIterator___next_t)CALL(variable1,COLOR_abstract_collection___Iterator___next))(variable1) /*ListIterator::next*/;
+    /* Register variable[4]: For 'is_ok' result */
+    variable[4] = CALL_abstract_collection___Iterator___is_ok(variable[3])(variable[3]) /*ListIterator::is_ok*/;
+    if (!UNTAG_Bool(variable[4])) break; /*for*/
+    variable[4] = CALL_abstract_collection___Iterator___item(variable[3])(variable[3]) /*ListIterator::item*/ /* Ensure var: For item*/;
+    /* Register variable[5]: Local variable */
+    variable[5] = variable[4];
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/,  variable[5] /*n*/) /*Visitor::visit*/;
+    continue_870: while(0);
+    CALL_abstract_collection___Iterator___next(variable[3])(variable[3]) /*ListIterator::next*/;
   }
-  break_820: while(0);
+  break_870: while(0);
+  return_label869: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AArrayExpr___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AArrayExpr::visit_all_reverse (src/parser//parser_prod.nit:9415,5--9421:11)"};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  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;
+  struct trace_t trace = {NULL, NULL, 9952, LOCATE_parser_prod___AArrayExpr___visit_all_reverse};
+  val_t variable[5];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  /* Register variable[3]: Local variable */
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___AArrayExpr____n_exprs(variable[0]) /*AArrayExpr::_n_exprs*/;
+  /* Register variable[4]: Result */
+  variable[4] = CALL_abstract_collection___Collection___length(variable[4])(variable[4]) /*List::length*/;
+  variable[3] = variable[4];
   while (true) { /*while*/
-    variable2 = TAG_Bool(UNTAG_Int( variable1 /*i*/)>=UNTAG_Int( TAG_Int(0)));
-    if (!UNTAG_Bool(variable2)) break; /* while*/
-    variable2 = ATTR_parser_nodes___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_822: while(0);
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(UNTAG_Int( variable[3] /*i*/)>=UNTAG_Int( TAG_Int(0)));
+    if (!UNTAG_Bool(variable[4])) break; /* while*/
+    /* Register variable[4]: Result */
+    variable[4] = ATTR_parser_nodes___AArrayExpr____n_exprs(variable[0]) /*AArrayExpr::_n_exprs*/;
+    /* Register variable[4]: Result */
+    variable[4] = CALL_abstract_collection___MapRead_____bra(variable[4])(variable[4],  variable[3] /*i*/) /*List::[]*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[4]) /*Visitor::visit*/;
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Int(UNTAG_Int( variable[3] /*i*/)-UNTAG_Int( TAG_Int(1)));
+    variable[3] = variable[4] /*i=*/;
+    continue_872: while(0);
   }
-  break_822: while(0);
+  break_872: while(0);
+  return_label871: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___ASelfExpr___n_kwself__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::ASelfExpr::n_kwself= (src/parser//parser_prod.nit:9427,5--9431:20)"};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  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*/) /*TKwself::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*TKwself::parent=*/;
-  }
+void parser_prod___AArrayExpr___empty_init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 9913, LOCATE_parser_prod___AArrayExpr___empty_init};
+  val_t variable[2];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AArrayExpr].i]) return;
+  /* Register variable[1]: Method return value and escape marker */
+  return_label873: while(false);
+  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AArrayExpr].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser_prod___ASelfExpr___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, "parser_prod::ASelfExpr::empty_init (src/parser//parser_prod.nit:9435,5--27)"};
-  trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ASelfExpr].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ASelfExpr].i] = 1;
+void parser_prod___AArrayExpr___init_aarrayexpr(val_t  self, val_t  param0, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 9915, LOCATE_parser_prod___AArrayExpr___init_aarrayexpr};
+  val_t variable[7];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AArrayExpr].i]) return;
+  /* Register variable[2]: Method return value and escape marker */
+  CALL_parser_prod___AArrayExpr___empty_init(variable[0])(variable[0], init_table /*YYY*/) /*AArrayExpr::empty_init*/;
+  /* Register variable[3]: Result */
+  variable[3] = NEW_List_list___List___init() /*new List[PExpr]*/;
+  ATTR_parser_nodes___AArrayExpr____n_exprs(variable[0]) /*AArrayExpr::_n_exprs*/ = variable[3];
+  /* Register variable[3]: For iterator */
+  variable[3] = CALL_abstract_collection___Collection___iterator( variable[1] /*n_exprs*/)( variable[1] /*n_exprs*/) /*Collection::iterator*/;
+  while (true) { /*for*/
+    /* Register variable[4]: For 'is_ok' result */
+    variable[4] = CALL_abstract_collection___Iterator___is_ok(variable[3])(variable[3]) /*Iterator::is_ok*/;
+    if (!UNTAG_Bool(variable[4])) break; /*for*/
+    variable[4] = CALL_abstract_collection___Iterator___item(variable[3])(variable[3]) /*Iterator::item*/ /* Ensure var: For item*/;
+    /* Register variable[5]: Local variable */
+    variable[5] = variable[4];
+    /* Register variable[6]: Result */
+    variable[6] = TAG_Bool(( variable[5] /*n*/==NIT_NULL) || VAL_ISA( variable[5] /*n*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
+    if (!UNTAG_Bool(variable[6])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AArrayExpr___init_aarrayexpr, LOCATE_parser_prod, 9922); nit_exit(1);}
+    /* Register variable[6]: Result */
+    variable[6] = ATTR_parser_nodes___AArrayExpr____n_exprs(variable[0]) /*AArrayExpr::_n_exprs*/;
+    CALL_abstract_collection___SimpleCollection___add(variable[6])(variable[6],  variable[5] /*n*/) /*IndexedCollection::add*/;
+    CALL_parser_prod___PNode___parent__eq( variable[5] /*n*/)( variable[5] /*n*/, variable[0]) /*PNode::parent=*/;
+    continue_875: while(0);
+    CALL_abstract_collection___Iterator___next(variable[3])(variable[3]) /*Iterator::next*/;
+  }
+  break_875: while(0);
+  return_label874: while(false);
+  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AArrayExpr].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, "parser_prod::ASelfExpr::init_aselfexpr (src/parser//parser_prod.nit:9437,5--9443:24)"};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___ASelfExpr___n_kwself__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 9964, LOCATE_parser_prod___ASelfExpr___n_kwself__eq};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  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*/) /*TKwself::==*/)))))));
-  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) /*TKwself::parent=*/;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  ATTR_parser_nodes___ASelfExpr____n_kwself(variable[0]) /*ASelfExpr::_n_kwself*/ =  variable[1] /*n*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[0]) /*PNode::parent=*/;
   }
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ASelfExpr].i] = 1;
+  return_label876: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___ASelfExpr___replace_child(val_t  self, val_t  param0, val_t  param1) {
-  struct trace_t trace = {NULL, "parser_prod::ASelfExpr::replace_child (src/parser//parser_prod.nit:9447,5--9458:18)"};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  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*/) /*PNode::==*/)))))));
-  if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert failed: src/parser//parser_prod.nit:9449,9--32\n"); 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*/) /*TKwself::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*PNode::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_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 failed: src/parser//parser_prod.nit:9453,3--30\n"); 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_label826;
+  struct trace_t trace = {NULL, NULL, 9985, LOCATE_parser_prod___ASelfExpr___replace_child};
+  val_t variable[5];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Local variable */
+  variable[2] =  param1;
+  /* Register variable[3]: Method return value and escape marker */
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ASelfExpr___replace_child, LOCATE_parser_prod, 9987); nit_exit(1);}
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___ASelfExpr____n_kwself(variable[0]) /*ASelfExpr::_n_kwself*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*PNode::parent=*/;
+      /* Register variable[4]: Result */
+      variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_TKwself, ID_TKwself)) /*cast TKwself*/;
+      if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ASelfExpr___replace_child, LOCATE_parser_prod, 9991); nit_exit(1);}
+      ATTR_parser_nodes___ASelfExpr____n_kwself(variable[0]) /*ASelfExpr::_n_kwself*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      ATTR_parser_nodes___ASelfExpr____n_kwself(variable[0]) /*ASelfExpr::_n_kwself*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label877;
   }
-  return_label826: while(false);
+  return_label877: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___ASelfExpr___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::ASelfExpr::visit_all (src/parser//parser_prod.nit:9462,5--9465:29)"};
-  val_t variable0;
-  val_t variable1;
+  struct trace_t trace = {NULL, NULL, 10000, LOCATE_parser_prod___ASelfExpr___visit_all};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  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*/) /*TKwself::==*/)))))));
-  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*/;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___ASelfExpr____n_kwself(variable[0]) /*ASelfExpr::_n_kwself*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___ASelfExpr____n_kwself(variable[0]) /*ASelfExpr::_n_kwself*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
+  return_label878: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___ASelfExpr___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::ASelfExpr::visit_all_reverse (src/parser//parser_prod.nit:9469,5--9472:29)"};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  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*/) /*TKwself::==*/)))))));
-  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*/;
+  struct trace_t trace = {NULL, NULL, 10007, LOCATE_parser_prod___ASelfExpr___visit_all_reverse};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___ASelfExpr____n_kwself(variable[0]) /*ASelfExpr::_n_kwself*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___ASelfExpr____n_kwself(variable[0]) /*ASelfExpr::_n_kwself*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
+  return_label879: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AImplicitSelfExpr___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, "parser_prod::AImplicitSelfExpr::empty_init (src/parser//parser_prod.nit:9478,5--27)"};
+void parser_prod___ASelfExpr___empty_init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 9972, LOCATE_parser_prod___ASelfExpr___empty_init};
+  val_t variable[2];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  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;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ASelfExpr].i]) return;
+  /* Register variable[1]: Method return value and escape marker */
+  return_label880: while(false);
+  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ASelfExpr].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AImplicitSelfExpr___init_aimplicitselfexpr(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, "parser_prod::AImplicitSelfExpr::init_aimplicitselfexpr (src/parser//parser_prod.nit:9480,5--31)"};
+void parser_prod___ASelfExpr___init_aselfexpr(val_t  self, val_t  param0, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 9974, LOCATE_parser_prod___ASelfExpr___init_aselfexpr};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  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;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ASelfExpr].i]) return;
+  /* Register variable[2]: Method return value and escape marker */
+  CALL_parser_prod___ASelfExpr___empty_init(variable[0])(variable[0], init_table /*YYY*/) /*ASelfExpr::empty_init*/;
+  ATTR_parser_nodes___ASelfExpr____n_kwself(variable[0]) /*ASelfExpr::_n_kwself*/ =  variable[1] /*n_kwself*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_kwself*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_kwself*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n_kwself*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_kwself*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n_kwself*/)( variable[1] /*n_kwself*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n_kwself*/)( variable[1] /*n_kwself*/, variable[0]) /*PNode::parent=*/;
+  }
+  return_label881: while(false);
+  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ASelfExpr].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, "parser_prod::AImplicitSelfExpr::replace_child (src/parser//parser_prod.nit:9484,5--9486:32)"};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
+  struct trace_t trace = {NULL, NULL, 10023, LOCATE_parser_prod___AImplicitSelfExpr___replace_child};
+  val_t variable[5];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  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*/) /*PNode::==*/)))))));
-  if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert failed: src/parser//parser_prod.nit:9486,9--32\n"); nit_exit(1);}
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Local variable */
+  variable[2] =  param1;
+  /* Register variable[3]: Method return value and escape marker */
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AImplicitSelfExpr___replace_child, LOCATE_parser_prod, 10025); nit_exit(1);}
+  return_label882: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AImplicitSelfExpr___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AImplicitSelfExpr::visit_all (src/parser//parser_prod.nit:9489,5--35)"};
-  val_t variable0;
+  struct trace_t trace = {NULL, NULL, 10028, LOCATE_parser_prod___AImplicitSelfExpr___visit_all};
+  val_t variable[3];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  variable0 =  param0;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  return_label883: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AImplicitSelfExpr___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AImplicitSelfExpr::visit_all_reverse (src/parser//parser_prod.nit:9493,5--43)"};
-  val_t variable0;
+  struct trace_t trace = {NULL, NULL, 10032, LOCATE_parser_prod___AImplicitSelfExpr___visit_all_reverse};
+  val_t variable[3];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  variable0 =  param0;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  return_label884: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___ATrueExpr___n_kwtrue__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::ATrueExpr::n_kwtrue= (src/parser//parser_prod.nit:9498,5--9502:20)"};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  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*/) /*TKwtrue::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*TKwtrue::parent=*/;
-  }
+void parser_prod___AImplicitSelfExpr___empty_init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 10016, LOCATE_parser_prod___AImplicitSelfExpr___empty_init};
+  val_t variable[2];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AImplicitSelfExpr].i]) return;
+  /* Register variable[1]: Method return value and escape marker */
+  return_label885: while(false);
+  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AImplicitSelfExpr].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser_prod___ATrueExpr___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, "parser_prod::ATrueExpr::empty_init (src/parser//parser_prod.nit:9506,5--27)"};
+void parser_prod___AImplicitSelfExpr___init_aimplicitselfexpr(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 10018, LOCATE_parser_prod___AImplicitSelfExpr___init_aimplicitselfexpr};
+  val_t variable[2];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ATrueExpr].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ATrueExpr].i] = 1;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AImplicitSelfExpr].i]) return;
+  /* Register variable[1]: Method return value and escape marker */
+  CALL_parser_prod___AImplicitSelfExpr___empty_init(variable[0])(variable[0], init_table /*YYY*/) /*AImplicitSelfExpr::empty_init*/;
+  return_label886: while(false);
+  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AImplicitSelfExpr].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, "parser_prod::ATrueExpr::init_atrueexpr (src/parser//parser_prod.nit:9508,5--9514:24)"};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___ATrueExpr___n_kwtrue__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 10037, LOCATE_parser_prod___ATrueExpr___n_kwtrue__eq};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  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*/) /*TKwtrue::==*/)))))));
-  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) /*TKwtrue::parent=*/;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  ATTR_parser_nodes___ATrueExpr____n_kwtrue(variable[0]) /*ATrueExpr::_n_kwtrue*/ =  variable[1] /*n*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[0]) /*PNode::parent=*/;
   }
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ATrueExpr].i] = 1;
+  return_label887: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___ATrueExpr___replace_child(val_t  self, val_t  param0, val_t  param1) {
-  struct trace_t trace = {NULL, "parser_prod::ATrueExpr::replace_child (src/parser//parser_prod.nit:9518,5--9529:18)"};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  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*/) /*PNode::==*/)))))));
-  if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert failed: src/parser//parser_prod.nit:9520,9--32\n"); 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*/) /*TKwtrue::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*PNode::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_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 failed: src/parser//parser_prod.nit:9524,3--30\n"); 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_label837;
+  struct trace_t trace = {NULL, NULL, 10058, LOCATE_parser_prod___ATrueExpr___replace_child};
+  val_t variable[5];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Local variable */
+  variable[2] =  param1;
+  /* Register variable[3]: Method return value and escape marker */
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ATrueExpr___replace_child, LOCATE_parser_prod, 10060); nit_exit(1);}
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___ATrueExpr____n_kwtrue(variable[0]) /*ATrueExpr::_n_kwtrue*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*PNode::parent=*/;
+      /* Register variable[4]: Result */
+      variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_TKwtrue, ID_TKwtrue)) /*cast TKwtrue*/;
+      if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ATrueExpr___replace_child, LOCATE_parser_prod, 10064); nit_exit(1);}
+      ATTR_parser_nodes___ATrueExpr____n_kwtrue(variable[0]) /*ATrueExpr::_n_kwtrue*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      ATTR_parser_nodes___ATrueExpr____n_kwtrue(variable[0]) /*ATrueExpr::_n_kwtrue*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label888;
   }
-  return_label837: while(false);
+  return_label888: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___ATrueExpr___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::ATrueExpr::visit_all (src/parser//parser_prod.nit:9533,5--9536:29)"};
-  val_t variable0;
-  val_t variable1;
+  struct trace_t trace = {NULL, NULL, 10073, LOCATE_parser_prod___ATrueExpr___visit_all};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  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*/) /*TKwtrue::==*/)))))));
-  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*/;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___ATrueExpr____n_kwtrue(variable[0]) /*ATrueExpr::_n_kwtrue*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___ATrueExpr____n_kwtrue(variable[0]) /*ATrueExpr::_n_kwtrue*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
+  return_label889: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___ATrueExpr___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::ATrueExpr::visit_all_reverse (src/parser//parser_prod.nit:9540,5--9543:29)"};
-  val_t variable0;
-  val_t variable1;
+  struct trace_t trace = {NULL, NULL, 10080, LOCATE_parser_prod___ATrueExpr___visit_all_reverse};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  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*/) /*TKwtrue::==*/)))))));
-  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*/;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___ATrueExpr____n_kwtrue(variable[0]) /*ATrueExpr::_n_kwtrue*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___ATrueExpr____n_kwtrue(variable[0]) /*ATrueExpr::_n_kwtrue*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
+  return_label890: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AFalseExpr___n_kwfalse__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AFalseExpr::n_kwfalse= (src/parser//parser_prod.nit:9548,5--9552:20)"};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  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*/) /*TKwfalse::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*TKwfalse::parent=*/;
-  }
+void parser_prod___ATrueExpr___empty_init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 10045, LOCATE_parser_prod___ATrueExpr___empty_init};
+  val_t variable[2];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ATrueExpr].i]) return;
+  /* Register variable[1]: Method return value and escape marker */
+  return_label891: while(false);
+  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ATrueExpr].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AFalseExpr___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, "parser_prod::AFalseExpr::empty_init (src/parser//parser_prod.nit:9556,5--27)"};
+void parser_prod___ATrueExpr___init_atrueexpr(val_t  self, val_t  param0, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 10047, LOCATE_parser_prod___ATrueExpr___init_atrueexpr};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AFalseExpr].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AFalseExpr].i] = 1;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ATrueExpr].i]) return;
+  /* Register variable[2]: Method return value and escape marker */
+  CALL_parser_prod___ATrueExpr___empty_init(variable[0])(variable[0], init_table /*YYY*/) /*ATrueExpr::empty_init*/;
+  ATTR_parser_nodes___ATrueExpr____n_kwtrue(variable[0]) /*ATrueExpr::_n_kwtrue*/ =  variable[1] /*n_kwtrue*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_kwtrue*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_kwtrue*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n_kwtrue*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_kwtrue*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n_kwtrue*/)( variable[1] /*n_kwtrue*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n_kwtrue*/)( variable[1] /*n_kwtrue*/, variable[0]) /*PNode::parent=*/;
+  }
+  return_label892: while(false);
+  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ATrueExpr].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, "parser_prod::AFalseExpr::init_afalseexpr (src/parser//parser_prod.nit:9558,5--9564:25)"};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___AFalseExpr___n_kwfalse__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 10088, LOCATE_parser_prod___AFalseExpr___n_kwfalse__eq};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  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*/) /*TKwfalse::==*/)))))));
-  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) /*TKwfalse::parent=*/;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  ATTR_parser_nodes___AFalseExpr____n_kwfalse(variable[0]) /*AFalseExpr::_n_kwfalse*/ =  variable[1] /*n*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[0]) /*PNode::parent=*/;
   }
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AFalseExpr].i] = 1;
+  return_label893: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AFalseExpr___replace_child(val_t  self, val_t  param0, val_t  param1) {
-  struct trace_t trace = {NULL, "parser_prod::AFalseExpr::replace_child (src/parser//parser_prod.nit:9568,5--9579:18)"};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  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*/) /*PNode::==*/)))))));
-  if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert failed: src/parser//parser_prod.nit:9570,9--32\n"); 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*/) /*TKwfalse::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*PNode::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_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 failed: src/parser//parser_prod.nit:9574,3--31\n"); 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_label843;
+  struct trace_t trace = {NULL, NULL, 10109, LOCATE_parser_prod___AFalseExpr___replace_child};
+  val_t variable[5];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Local variable */
+  variable[2] =  param1;
+  /* Register variable[3]: Method return value and escape marker */
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AFalseExpr___replace_child, LOCATE_parser_prod, 10111); nit_exit(1);}
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___AFalseExpr____n_kwfalse(variable[0]) /*AFalseExpr::_n_kwfalse*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*PNode::parent=*/;
+      /* Register variable[4]: Result */
+      variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_TKwfalse, ID_TKwfalse)) /*cast TKwfalse*/;
+      if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AFalseExpr___replace_child, LOCATE_parser_prod, 10115); nit_exit(1);}
+      ATTR_parser_nodes___AFalseExpr____n_kwfalse(variable[0]) /*AFalseExpr::_n_kwfalse*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      ATTR_parser_nodes___AFalseExpr____n_kwfalse(variable[0]) /*AFalseExpr::_n_kwfalse*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label894;
   }
-  return_label843: while(false);
+  return_label894: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AFalseExpr___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AFalseExpr::visit_all (src/parser//parser_prod.nit:9583,5--9586:30)"};
-  val_t variable0;
-  val_t variable1;
+  struct trace_t trace = {NULL, NULL, 10124, LOCATE_parser_prod___AFalseExpr___visit_all};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  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*/) /*TKwfalse::==*/)))))));
-  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*/;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AFalseExpr____n_kwfalse(variable[0]) /*AFalseExpr::_n_kwfalse*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AFalseExpr____n_kwfalse(variable[0]) /*AFalseExpr::_n_kwfalse*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
+  return_label895: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AFalseExpr___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AFalseExpr::visit_all_reverse (src/parser//parser_prod.nit:9590,5--9593:30)"};
-  val_t variable0;
-  val_t variable1;
+  struct trace_t trace = {NULL, NULL, 10131, LOCATE_parser_prod___AFalseExpr___visit_all_reverse};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  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*/) /*TKwfalse::==*/)))))));
-  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*/;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AFalseExpr____n_kwfalse(variable[0]) /*AFalseExpr::_n_kwfalse*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AFalseExpr____n_kwfalse(variable[0]) /*AFalseExpr::_n_kwfalse*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
+  return_label896: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___ANullExpr___n_kwnull__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::ANullExpr::n_kwnull= (src/parser//parser_prod.nit:9598,5--9602:20)"};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  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*/) /*TKwnull::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*TKwnull::parent=*/;
-  }
+void parser_prod___AFalseExpr___empty_init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 10096, LOCATE_parser_prod___AFalseExpr___empty_init};
+  val_t variable[2];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AFalseExpr].i]) return;
+  /* Register variable[1]: Method return value and escape marker */
+  return_label897: while(false);
+  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AFalseExpr].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser_prod___ANullExpr___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, "parser_prod::ANullExpr::empty_init (src/parser//parser_prod.nit:9606,5--27)"};
+void parser_prod___AFalseExpr___init_afalseexpr(val_t  self, val_t  param0, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 10098, LOCATE_parser_prod___AFalseExpr___init_afalseexpr};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ANullExpr].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ANullExpr].i] = 1;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AFalseExpr].i]) return;
+  /* Register variable[2]: Method return value and escape marker */
+  CALL_parser_prod___AFalseExpr___empty_init(variable[0])(variable[0], init_table /*YYY*/) /*AFalseExpr::empty_init*/;
+  ATTR_parser_nodes___AFalseExpr____n_kwfalse(variable[0]) /*AFalseExpr::_n_kwfalse*/ =  variable[1] /*n_kwfalse*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_kwfalse*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_kwfalse*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n_kwfalse*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_kwfalse*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n_kwfalse*/)( variable[1] /*n_kwfalse*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n_kwfalse*/)( variable[1] /*n_kwfalse*/, variable[0]) /*PNode::parent=*/;
+  }
+  return_label898: while(false);
+  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AFalseExpr].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, "parser_prod::ANullExpr::init_anullexpr (src/parser//parser_prod.nit:9608,5--9614:24)"};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___ANullExpr___n_kwnull__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 10139, LOCATE_parser_prod___ANullExpr___n_kwnull__eq};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  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*/) /*TKwnull::==*/)))))));
-  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) /*TKwnull::parent=*/;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  ATTR_parser_nodes___ANullExpr____n_kwnull(variable[0]) /*ANullExpr::_n_kwnull*/ =  variable[1] /*n*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[0]) /*PNode::parent=*/;
   }
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ANullExpr].i] = 1;
+  return_label899: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___ANullExpr___replace_child(val_t  self, val_t  param0, val_t  param1) {
-  struct trace_t trace = {NULL, "parser_prod::ANullExpr::replace_child (src/parser//parser_prod.nit:9618,5--9629:18)"};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  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*/) /*PNode::==*/)))))));
-  if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert failed: src/parser//parser_prod.nit:9620,9--32\n"); 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*/) /*TKwnull::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*PNode::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_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 failed: src/parser//parser_prod.nit:9624,3--30\n"); 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_label849;
+  struct trace_t trace = {NULL, NULL, 10160, LOCATE_parser_prod___ANullExpr___replace_child};
+  val_t variable[5];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Local variable */
+  variable[2] =  param1;
+  /* Register variable[3]: Method return value and escape marker */
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ANullExpr___replace_child, LOCATE_parser_prod, 10162); nit_exit(1);}
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___ANullExpr____n_kwnull(variable[0]) /*ANullExpr::_n_kwnull*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*PNode::parent=*/;
+      /* Register variable[4]: Result */
+      variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_TKwnull, ID_TKwnull)) /*cast TKwnull*/;
+      if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ANullExpr___replace_child, LOCATE_parser_prod, 10166); nit_exit(1);}
+      ATTR_parser_nodes___ANullExpr____n_kwnull(variable[0]) /*ANullExpr::_n_kwnull*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      ATTR_parser_nodes___ANullExpr____n_kwnull(variable[0]) /*ANullExpr::_n_kwnull*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label900;
   }
-  return_label849: while(false);
+  return_label900: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___ANullExpr___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::ANullExpr::visit_all (src/parser//parser_prod.nit:9633,5--9636:29)"};
-  val_t variable0;
-  val_t variable1;
+  struct trace_t trace = {NULL, NULL, 10175, LOCATE_parser_prod___ANullExpr___visit_all};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  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*/) /*TKwnull::==*/)))))));
-  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*/;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___ANullExpr____n_kwnull(variable[0]) /*ANullExpr::_n_kwnull*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___ANullExpr____n_kwnull(variable[0]) /*ANullExpr::_n_kwnull*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
+  return_label901: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___ANullExpr___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::ANullExpr::visit_all_reverse (src/parser//parser_prod.nit:9640,5--9643:29)"};
-  val_t variable0;
-  val_t variable1;
+  struct trace_t trace = {NULL, NULL, 10182, LOCATE_parser_prod___ANullExpr___visit_all_reverse};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  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*/) /*TKwnull::==*/)))))));
-  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*/;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___ANullExpr____n_kwnull(variable[0]) /*ANullExpr::_n_kwnull*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___ANullExpr____n_kwnull(variable[0]) /*ANullExpr::_n_kwnull*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
+  return_label902: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AIntExpr___n_number__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AIntExpr::n_number= (src/parser//parser_prod.nit:9648,5--9652:20)"};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___ANullExpr___empty_init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 10147, LOCATE_parser_prod___ANullExpr___empty_init};
+  val_t variable[2];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  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*/) /*TNumber::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*TNumber::parent=*/;
-  }
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ANullExpr].i]) return;
+  /* Register variable[1]: Method return value and escape marker */
+  return_label903: while(false);
+  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ANullExpr].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AIntExpr___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, "parser_prod::AIntExpr::empty_init (src/parser//parser_prod.nit:9656,5--27)"};
+void parser_prod___ANullExpr___init_anullexpr(val_t  self, val_t  param0, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 10149, LOCATE_parser_prod___ANullExpr___init_anullexpr};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AIntExpr].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AIntExpr].i] = 1;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ANullExpr].i]) return;
+  /* Register variable[2]: Method return value and escape marker */
+  CALL_parser_prod___ANullExpr___empty_init(variable[0])(variable[0], init_table /*YYY*/) /*ANullExpr::empty_init*/;
+  ATTR_parser_nodes___ANullExpr____n_kwnull(variable[0]) /*ANullExpr::_n_kwnull*/ =  variable[1] /*n_kwnull*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_kwnull*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_kwnull*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n_kwnull*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_kwnull*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n_kwnull*/)( variable[1] /*n_kwnull*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n_kwnull*/)( variable[1] /*n_kwnull*/, variable[0]) /*PNode::parent=*/;
+  }
+  return_label904: while(false);
+  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ANullExpr].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, "parser_prod::AIntExpr::init_aintexpr (src/parser//parser_prod.nit:9658,5--9664:24)"};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___AIntExpr___n_number__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 10190, LOCATE_parser_prod___AIntExpr___n_number__eq};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  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*/) /*TNumber::==*/)))))));
-  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) /*TNumber::parent=*/;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  ATTR_parser_nodes___AIntExpr____n_number(variable[0]) /*AIntExpr::_n_number*/ =  variable[1] /*n*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[0]) /*PNode::parent=*/;
   }
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AIntExpr].i] = 1;
+  return_label905: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AIntExpr___replace_child(val_t  self, val_t  param0, val_t  param1) {
-  struct trace_t trace = {NULL, "parser_prod::AIntExpr::replace_child (src/parser//parser_prod.nit:9668,5--9679:18)"};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  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*/) /*PNode::==*/)))))));
-  if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert failed: src/parser//parser_prod.nit:9670,9--32\n"); 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*/) /*TNumber::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*PNode::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_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 failed: src/parser//parser_prod.nit:9674,3--30\n"); 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*/;
+  struct trace_t trace = {NULL, NULL, 10211, LOCATE_parser_prod___AIntExpr___replace_child};
+  val_t variable[5];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Local variable */
+  variable[2] =  param1;
+  /* Register variable[3]: Method return value and escape marker */
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AIntExpr___replace_child, LOCATE_parser_prod, 10213); nit_exit(1);}
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___AIntExpr____n_number(variable[0]) /*AIntExpr::_n_number*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*PNode::parent=*/;
+      /* Register variable[4]: Result */
+      variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_TNumber, ID_TNumber)) /*cast TNumber*/;
+      if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AIntExpr___replace_child, LOCATE_parser_prod, 10217); nit_exit(1);}
+      ATTR_parser_nodes___AIntExpr____n_number(variable[0]) /*AIntExpr::_n_number*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      ATTR_parser_nodes___AIntExpr____n_number(variable[0]) /*AIntExpr::_n_number*/ =  NIT_NULL /*null*/;
     }
-    goto return_label855;
+    goto return_label906;
   }
-  return_label855: while(false);
+  return_label906: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AIntExpr___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AIntExpr::visit_all (src/parser//parser_prod.nit:9683,5--9686:29)"};
-  val_t variable0;
-  val_t variable1;
+  struct trace_t trace = {NULL, NULL, 10226, LOCATE_parser_prod___AIntExpr___visit_all};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  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*/) /*TNumber::==*/)))))));
-  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*/;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AIntExpr____n_number(variable[0]) /*AIntExpr::_n_number*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AIntExpr____n_number(variable[0]) /*AIntExpr::_n_number*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
+  return_label907: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AIntExpr___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AIntExpr::visit_all_reverse (src/parser//parser_prod.nit:9690,5--9693:29)"};
-  val_t variable0;
-  val_t variable1;
+  struct trace_t trace = {NULL, NULL, 10233, LOCATE_parser_prod___AIntExpr___visit_all_reverse};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  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*/) /*TNumber::==*/)))))));
-  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*/;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AIntExpr____n_number(variable[0]) /*AIntExpr::_n_number*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AIntExpr____n_number(variable[0]) /*AIntExpr::_n_number*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
+  return_label908: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AFloatExpr___n_float__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AFloatExpr::n_float= (src/parser//parser_prod.nit:9698,5--9702:20)"};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___AIntExpr___empty_init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 10198, LOCATE_parser_prod___AIntExpr___empty_init};
+  val_t variable[2];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  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*/) /*TFloat::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*TFloat::parent=*/;
-  }
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AIntExpr].i]) return;
+  /* Register variable[1]: Method return value and escape marker */
+  return_label909: while(false);
+  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AIntExpr].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AFloatExpr___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, "parser_prod::AFloatExpr::empty_init (src/parser//parser_prod.nit:9706,5--27)"};
+void parser_prod___AIntExpr___init_aintexpr(val_t  self, val_t  param0, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 10200, LOCATE_parser_prod___AIntExpr___init_aintexpr};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AFloatExpr].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AFloatExpr].i] = 1;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AIntExpr].i]) return;
+  /* Register variable[2]: Method return value and escape marker */
+  CALL_parser_prod___AIntExpr___empty_init(variable[0])(variable[0], init_table /*YYY*/) /*AIntExpr::empty_init*/;
+  ATTR_parser_nodes___AIntExpr____n_number(variable[0]) /*AIntExpr::_n_number*/ =  variable[1] /*n_number*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_number*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_number*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n_number*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_number*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n_number*/)( variable[1] /*n_number*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n_number*/)( variable[1] /*n_number*/, variable[0]) /*PNode::parent=*/;
+  }
+  return_label910: while(false);
+  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AIntExpr].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, "parser_prod::AFloatExpr::init_afloatexpr (src/parser//parser_prod.nit:9708,5--9714:23)"};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___AFloatExpr___n_float__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 10241, LOCATE_parser_prod___AFloatExpr___n_float__eq};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  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*/) /*TFloat::==*/)))))));
-  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) /*TFloat::parent=*/;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  ATTR_parser_nodes___AFloatExpr____n_float(variable[0]) /*AFloatExpr::_n_float*/ =  variable[1] /*n*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[0]) /*PNode::parent=*/;
   }
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AFloatExpr].i] = 1;
+  return_label911: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AFloatExpr___replace_child(val_t  self, val_t  param0, val_t  param1) {
-  struct trace_t trace = {NULL, "parser_prod::AFloatExpr::replace_child (src/parser//parser_prod.nit:9718,5--9729:18)"};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  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*/) /*PNode::==*/)))))));
-  if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert failed: src/parser//parser_prod.nit:9720,9--32\n"); 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*/) /*TFloat::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*PNode::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_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 failed: src/parser//parser_prod.nit:9724,3--29\n"); 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_label861;
+  struct trace_t trace = {NULL, NULL, 10262, LOCATE_parser_prod___AFloatExpr___replace_child};
+  val_t variable[5];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Local variable */
+  variable[2] =  param1;
+  /* Register variable[3]: Method return value and escape marker */
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AFloatExpr___replace_child, LOCATE_parser_prod, 10264); nit_exit(1);}
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___AFloatExpr____n_float(variable[0]) /*AFloatExpr::_n_float*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*PNode::parent=*/;
+      /* Register variable[4]: Result */
+      variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_TFloat, ID_TFloat)) /*cast TFloat*/;
+      if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AFloatExpr___replace_child, LOCATE_parser_prod, 10268); nit_exit(1);}
+      ATTR_parser_nodes___AFloatExpr____n_float(variable[0]) /*AFloatExpr::_n_float*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      ATTR_parser_nodes___AFloatExpr____n_float(variable[0]) /*AFloatExpr::_n_float*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label912;
   }
-  return_label861: while(false);
+  return_label912: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AFloatExpr___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AFloatExpr::visit_all (src/parser//parser_prod.nit:9733,5--9736:28)"};
-  val_t variable0;
-  val_t variable1;
+  struct trace_t trace = {NULL, NULL, 10277, LOCATE_parser_prod___AFloatExpr___visit_all};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  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*/) /*TFloat::==*/)))))));
-  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*/;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AFloatExpr____n_float(variable[0]) /*AFloatExpr::_n_float*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AFloatExpr____n_float(variable[0]) /*AFloatExpr::_n_float*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
+  return_label913: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AFloatExpr___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AFloatExpr::visit_all_reverse (src/parser//parser_prod.nit:9740,5--9743:28)"};
-  val_t variable0;
-  val_t variable1;
+  struct trace_t trace = {NULL, NULL, 10284, LOCATE_parser_prod___AFloatExpr___visit_all_reverse};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  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*/) /*TFloat::==*/)))))));
-  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*/;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AFloatExpr____n_float(variable[0]) /*AFloatExpr::_n_float*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AFloatExpr____n_float(variable[0]) /*AFloatExpr::_n_float*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
+  return_label914: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___ACharExpr___n_char__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::ACharExpr::n_char= (src/parser//parser_prod.nit:9748,5--9752:20)"};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___AFloatExpr___empty_init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 10249, LOCATE_parser_prod___AFloatExpr___empty_init};
+  val_t variable[2];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  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*/) /*TChar::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*TChar::parent=*/;
-  }
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AFloatExpr].i]) return;
+  /* Register variable[1]: Method return value and escape marker */
+  return_label915: while(false);
+  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AFloatExpr].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser_prod___ACharExpr___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, "parser_prod::ACharExpr::empty_init (src/parser//parser_prod.nit:9756,5--27)"};
+void parser_prod___AFloatExpr___init_afloatexpr(val_t  self, val_t  param0, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 10251, LOCATE_parser_prod___AFloatExpr___init_afloatexpr};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ACharExpr].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ACharExpr].i] = 1;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AFloatExpr].i]) return;
+  /* Register variable[2]: Method return value and escape marker */
+  CALL_parser_prod___AFloatExpr___empty_init(variable[0])(variable[0], init_table /*YYY*/) /*AFloatExpr::empty_init*/;
+  ATTR_parser_nodes___AFloatExpr____n_float(variable[0]) /*AFloatExpr::_n_float*/ =  variable[1] /*n_float*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_float*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_float*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n_float*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_float*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n_float*/)( variable[1] /*n_float*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n_float*/)( variable[1] /*n_float*/, variable[0]) /*PNode::parent=*/;
+  }
+  return_label916: while(false);
+  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AFloatExpr].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, "parser_prod::ACharExpr::init_acharexpr (src/parser//parser_prod.nit:9758,5--9764:22)"};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___ACharExpr___n_char__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 10292, LOCATE_parser_prod___ACharExpr___n_char__eq};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  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*/) /*TChar::==*/)))))));
-  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) /*TChar::parent=*/;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  ATTR_parser_nodes___ACharExpr____n_char(variable[0]) /*ACharExpr::_n_char*/ =  variable[1] /*n*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[0]) /*PNode::parent=*/;
   }
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ACharExpr].i] = 1;
+  return_label917: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___ACharExpr___replace_child(val_t  self, val_t  param0, val_t  param1) {
-  struct trace_t trace = {NULL, "parser_prod::ACharExpr::replace_child (src/parser//parser_prod.nit:9768,5--9779:18)"};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  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*/) /*PNode::==*/)))))));
-  if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert failed: src/parser//parser_prod.nit:9770,9--32\n"); 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*/) /*TChar::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*PNode::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_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 failed: src/parser//parser_prod.nit:9774,3--28\n"); 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_label867;
+  struct trace_t trace = {NULL, NULL, 10313, LOCATE_parser_prod___ACharExpr___replace_child};
+  val_t variable[5];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Local variable */
+  variable[2] =  param1;
+  /* Register variable[3]: Method return value and escape marker */
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ACharExpr___replace_child, LOCATE_parser_prod, 10315); nit_exit(1);}
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___ACharExpr____n_char(variable[0]) /*ACharExpr::_n_char*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*PNode::parent=*/;
+      /* Register variable[4]: Result */
+      variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_TChar, ID_TChar)) /*cast TChar*/;
+      if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ACharExpr___replace_child, LOCATE_parser_prod, 10319); nit_exit(1);}
+      ATTR_parser_nodes___ACharExpr____n_char(variable[0]) /*ACharExpr::_n_char*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      ATTR_parser_nodes___ACharExpr____n_char(variable[0]) /*ACharExpr::_n_char*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label918;
   }
-  return_label867: while(false);
+  return_label918: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___ACharExpr___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::ACharExpr::visit_all (src/parser//parser_prod.nit:9783,5--9786:27)"};
-  val_t variable0;
-  val_t variable1;
+  struct trace_t trace = {NULL, NULL, 10328, LOCATE_parser_prod___ACharExpr___visit_all};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  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*/) /*TChar::==*/)))))));
-  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*/;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___ACharExpr____n_char(variable[0]) /*ACharExpr::_n_char*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___ACharExpr____n_char(variable[0]) /*ACharExpr::_n_char*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
+  return_label919: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___ACharExpr___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::ACharExpr::visit_all_reverse (src/parser//parser_prod.nit:9790,5--9793:27)"};
-  val_t variable0;
-  val_t variable1;
+  struct trace_t trace = {NULL, NULL, 10335, LOCATE_parser_prod___ACharExpr___visit_all_reverse};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  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*/) /*TChar::==*/)))))));
-  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*/;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___ACharExpr____n_char(variable[0]) /*ACharExpr::_n_char*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___ACharExpr____n_char(variable[0]) /*ACharExpr::_n_char*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
+  return_label920: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AStringExpr___n_string__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AStringExpr::n_string= (src/parser//parser_prod.nit:9798,5--9802:20)"};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___ACharExpr___empty_init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 10300, LOCATE_parser_prod___ACharExpr___empty_init};
+  val_t variable[2];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  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*/) /*TString::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*TString::parent=*/;
-  }
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ACharExpr].i]) return;
+  /* Register variable[1]: Method return value and escape marker */
+  return_label921: while(false);
+  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ACharExpr].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AStringExpr___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, "parser_prod::AStringExpr::empty_init (src/parser//parser_prod.nit:9806,5--27)"};
+void parser_prod___ACharExpr___init_acharexpr(val_t  self, val_t  param0, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 10302, LOCATE_parser_prod___ACharExpr___init_acharexpr};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AStringExpr].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AStringExpr].i] = 1;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ACharExpr].i]) return;
+  /* Register variable[2]: Method return value and escape marker */
+  CALL_parser_prod___ACharExpr___empty_init(variable[0])(variable[0], init_table /*YYY*/) /*ACharExpr::empty_init*/;
+  ATTR_parser_nodes___ACharExpr____n_char(variable[0]) /*ACharExpr::_n_char*/ =  variable[1] /*n_char*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_char*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_char*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n_char*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_char*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n_char*/)( variable[1] /*n_char*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n_char*/)( variable[1] /*n_char*/, variable[0]) /*PNode::parent=*/;
+  }
+  return_label922: while(false);
+  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ACharExpr].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, "parser_prod::AStringExpr::init_astringexpr (src/parser//parser_prod.nit:9808,5--9814:24)"};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___AStringExpr___n_string__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 10343, LOCATE_parser_prod___AStringExpr___n_string__eq};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  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*/) /*TString::==*/)))))));
-  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) /*TString::parent=*/;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  ATTR_parser_nodes___AStringExpr____n_string(variable[0]) /*AStringExpr::_n_string*/ =  variable[1] /*n*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[0]) /*PNode::parent=*/;
   }
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AStringExpr].i] = 1;
+  return_label923: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AStringExpr___replace_child(val_t  self, val_t  param0, val_t  param1) {
-  struct trace_t trace = {NULL, "parser_prod::AStringExpr::replace_child (src/parser//parser_prod.nit:9818,5--9829:18)"};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  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*/) /*PNode::==*/)))))));
-  if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert failed: src/parser//parser_prod.nit:9820,9--32\n"); 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*/) /*TString::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*PNode::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_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 failed: src/parser//parser_prod.nit:9824,3--30\n"); 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_label873;
+  struct trace_t trace = {NULL, NULL, 10364, LOCATE_parser_prod___AStringExpr___replace_child};
+  val_t variable[5];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Local variable */
+  variable[2] =  param1;
+  /* Register variable[3]: Method return value and escape marker */
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AStringExpr___replace_child, LOCATE_parser_prod, 10366); nit_exit(1);}
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___AStringExpr____n_string(variable[0]) /*AStringExpr::_n_string*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*PNode::parent=*/;
+      /* Register variable[4]: Result */
+      variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_TString, ID_TString)) /*cast TString*/;
+      if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AStringExpr___replace_child, LOCATE_parser_prod, 10370); nit_exit(1);}
+      ATTR_parser_nodes___AStringExpr____n_string(variable[0]) /*AStringExpr::_n_string*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      ATTR_parser_nodes___AStringExpr____n_string(variable[0]) /*AStringExpr::_n_string*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label924;
   }
-  return_label873: while(false);
+  return_label924: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AStringExpr___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AStringExpr::visit_all (src/parser//parser_prod.nit:9833,5--9836:29)"};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  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*/) /*TString::==*/)))))));
-  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*/;
+  struct trace_t trace = {NULL, NULL, 10379, LOCATE_parser_prod___AStringExpr___visit_all};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AStringExpr____n_string(variable[0]) /*AStringExpr::_n_string*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AStringExpr____n_string(variable[0]) /*AStringExpr::_n_string*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
+  return_label925: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AStringExpr___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AStringExpr::visit_all_reverse (src/parser//parser_prod.nit:9840,5--9843:29)"};
-  val_t variable0;
-  val_t variable1;
+  struct trace_t trace = {NULL, NULL, 10386, LOCATE_parser_prod___AStringExpr___visit_all_reverse};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  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*/) /*TString::==*/)))))));
-  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*/;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AStringExpr____n_string(variable[0]) /*AStringExpr::_n_string*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AStringExpr____n_string(variable[0]) /*AStringExpr::_n_string*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
+  return_label926: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AStartStringExpr___n_string__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AStartStringExpr::n_string= (src/parser//parser_prod.nit:9848,5--9852:20)"};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___AStringExpr___empty_init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 10351, LOCATE_parser_prod___AStringExpr___empty_init};
+  val_t variable[2];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  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*/) /*TStartString::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*TStartString::parent=*/;
-  }
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AStringExpr].i]) return;
+  /* Register variable[1]: Method return value and escape marker */
+  return_label927: while(false);
+  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AStringExpr].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AStartStringExpr___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, "parser_prod::AStartStringExpr::empty_init (src/parser//parser_prod.nit:9856,5--27)"};
+void parser_prod___AStringExpr___init_astringexpr(val_t  self, val_t  param0, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 10353, LOCATE_parser_prod___AStringExpr___init_astringexpr};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AStartStringExpr].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AStartStringExpr].i] = 1;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AStringExpr].i]) return;
+  /* Register variable[2]: Method return value and escape marker */
+  CALL_parser_prod___AStringExpr___empty_init(variable[0])(variable[0], init_table /*YYY*/) /*AStringExpr::empty_init*/;
+  ATTR_parser_nodes___AStringExpr____n_string(variable[0]) /*AStringExpr::_n_string*/ =  variable[1] /*n_string*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_string*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_string*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n_string*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_string*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n_string*/)( variable[1] /*n_string*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n_string*/)( variable[1] /*n_string*/, variable[0]) /*PNode::parent=*/;
+  }
+  return_label928: while(false);
+  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AStringExpr].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, "parser_prod::AStartStringExpr::init_astartstringexpr (src/parser//parser_prod.nit:9858,5--9864:24)"};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___AStartStringExpr___n_string__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 10394, LOCATE_parser_prod___AStartStringExpr___n_string__eq};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  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*/) /*TStartString::==*/)))))));
-  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) /*TStartString::parent=*/;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  ATTR_parser_nodes___AStartStringExpr____n_string(variable[0]) /*AStartStringExpr::_n_string*/ =  variable[1] /*n*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[0]) /*PNode::parent=*/;
   }
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AStartStringExpr].i] = 1;
+  return_label929: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AStartStringExpr___replace_child(val_t  self, val_t  param0, val_t  param1) {
-  struct trace_t trace = {NULL, "parser_prod::AStartStringExpr::replace_child (src/parser//parser_prod.nit:9868,5--9879:18)"};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  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*/) /*PNode::==*/)))))));
-  if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert failed: src/parser//parser_prod.nit:9870,9--32\n"); 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*/) /*TStartString::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*PNode::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_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 failed: src/parser//parser_prod.nit:9874,3--35\n"); 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_label879;
+  struct trace_t trace = {NULL, NULL, 10415, LOCATE_parser_prod___AStartStringExpr___replace_child};
+  val_t variable[5];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Local variable */
+  variable[2] =  param1;
+  /* Register variable[3]: Method return value and escape marker */
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AStartStringExpr___replace_child, LOCATE_parser_prod, 10417); nit_exit(1);}
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___AStartStringExpr____n_string(variable[0]) /*AStartStringExpr::_n_string*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*PNode::parent=*/;
+      /* Register variable[4]: Result */
+      variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_TStartString, ID_TStartString)) /*cast TStartString*/;
+      if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AStartStringExpr___replace_child, LOCATE_parser_prod, 10421); nit_exit(1);}
+      ATTR_parser_nodes___AStartStringExpr____n_string(variable[0]) /*AStartStringExpr::_n_string*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      ATTR_parser_nodes___AStartStringExpr____n_string(variable[0]) /*AStartStringExpr::_n_string*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label930;
   }
-  return_label879: while(false);
+  return_label930: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AStartStringExpr___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AStartStringExpr::visit_all (src/parser//parser_prod.nit:9883,5--9886:29)"};
-  val_t variable0;
-  val_t variable1;
+  struct trace_t trace = {NULL, NULL, 10430, LOCATE_parser_prod___AStartStringExpr___visit_all};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  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*/) /*TStartString::==*/)))))));
-  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*/;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AStartStringExpr____n_string(variable[0]) /*AStartStringExpr::_n_string*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AStartStringExpr____n_string(variable[0]) /*AStartStringExpr::_n_string*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
+  return_label931: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AStartStringExpr___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AStartStringExpr::visit_all_reverse (src/parser//parser_prod.nit:9890,5--9893:29)"};
-  val_t variable0;
-  val_t variable1;
+  struct trace_t trace = {NULL, NULL, 10437, LOCATE_parser_prod___AStartStringExpr___visit_all_reverse};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  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*/) /*TStartString::==*/)))))));
-  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*/;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AStartStringExpr____n_string(variable[0]) /*AStartStringExpr::_n_string*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AStartStringExpr____n_string(variable[0]) /*AStartStringExpr::_n_string*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
+  return_label932: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AMidStringExpr___n_string__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AMidStringExpr::n_string= (src/parser//parser_prod.nit:9898,5--9902:20)"};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___AStartStringExpr___empty_init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 10402, LOCATE_parser_prod___AStartStringExpr___empty_init};
+  val_t variable[2];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  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*/) /*TMidString::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*TMidString::parent=*/;
-  }
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AStartStringExpr].i]) return;
+  /* Register variable[1]: Method return value and escape marker */
+  return_label933: while(false);
+  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AStartStringExpr].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AMidStringExpr___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, "parser_prod::AMidStringExpr::empty_init (src/parser//parser_prod.nit:9906,5--27)"};
-  trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AMidStringExpr].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AMidStringExpr].i] = 1;
+void parser_prod___AStartStringExpr___init_astartstringexpr(val_t  self, val_t  param0, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 10404, LOCATE_parser_prod___AStartStringExpr___init_astartstringexpr};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AStartStringExpr].i]) return;
+  /* Register variable[2]: Method return value and escape marker */
+  CALL_parser_prod___AStartStringExpr___empty_init(variable[0])(variable[0], init_table /*YYY*/) /*AStartStringExpr::empty_init*/;
+  ATTR_parser_nodes___AStartStringExpr____n_string(variable[0]) /*AStartStringExpr::_n_string*/ =  variable[1] /*n_string*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_string*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_string*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n_string*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_string*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n_string*/)( variable[1] /*n_string*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n_string*/)( variable[1] /*n_string*/, variable[0]) /*PNode::parent=*/;
+  }
+  return_label934: while(false);
+  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AStartStringExpr].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, "parser_prod::AMidStringExpr::init_amidstringexpr (src/parser//parser_prod.nit:9908,5--9914:24)"};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___AMidStringExpr___n_string__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 10445, LOCATE_parser_prod___AMidStringExpr___n_string__eq};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  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*/) /*TMidString::==*/)))))));
-  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) /*TMidString::parent=*/;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  ATTR_parser_nodes___AMidStringExpr____n_string(variable[0]) /*AMidStringExpr::_n_string*/ =  variable[1] /*n*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[0]) /*PNode::parent=*/;
   }
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AMidStringExpr].i] = 1;
+  return_label935: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AMidStringExpr___replace_child(val_t  self, val_t  param0, val_t  param1) {
-  struct trace_t trace = {NULL, "parser_prod::AMidStringExpr::replace_child (src/parser//parser_prod.nit:9918,5--9929:18)"};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  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*/) /*PNode::==*/)))))));
-  if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert failed: src/parser//parser_prod.nit:9920,9--32\n"); 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*/) /*TMidString::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*PNode::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_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 failed: src/parser//parser_prod.nit:9924,3--33\n"); 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_label885;
+  struct trace_t trace = {NULL, NULL, 10466, LOCATE_parser_prod___AMidStringExpr___replace_child};
+  val_t variable[5];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Local variable */
+  variable[2] =  param1;
+  /* Register variable[3]: Method return value and escape marker */
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AMidStringExpr___replace_child, LOCATE_parser_prod, 10468); nit_exit(1);}
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___AMidStringExpr____n_string(variable[0]) /*AMidStringExpr::_n_string*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*PNode::parent=*/;
+      /* Register variable[4]: Result */
+      variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_TMidString, ID_TMidString)) /*cast TMidString*/;
+      if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AMidStringExpr___replace_child, LOCATE_parser_prod, 10472); nit_exit(1);}
+      ATTR_parser_nodes___AMidStringExpr____n_string(variable[0]) /*AMidStringExpr::_n_string*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      ATTR_parser_nodes___AMidStringExpr____n_string(variable[0]) /*AMidStringExpr::_n_string*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label936;
   }
-  return_label885: while(false);
+  return_label936: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AMidStringExpr___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AMidStringExpr::visit_all (src/parser//parser_prod.nit:9933,5--9936:29)"};
-  val_t variable0;
-  val_t variable1;
+  struct trace_t trace = {NULL, NULL, 10481, LOCATE_parser_prod___AMidStringExpr___visit_all};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  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*/) /*TMidString::==*/)))))));
-  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*/;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AMidStringExpr____n_string(variable[0]) /*AMidStringExpr::_n_string*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AMidStringExpr____n_string(variable[0]) /*AMidStringExpr::_n_string*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
+  return_label937: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AMidStringExpr___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AMidStringExpr::visit_all_reverse (src/parser//parser_prod.nit:9940,5--9943:29)"};
-  val_t variable0;
-  val_t variable1;
+  struct trace_t trace = {NULL, NULL, 10488, LOCATE_parser_prod___AMidStringExpr___visit_all_reverse};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  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*/) /*TMidString::==*/)))))));
-  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*/;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AMidStringExpr____n_string(variable[0]) /*AMidStringExpr::_n_string*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AMidStringExpr____n_string(variable[0]) /*AMidStringExpr::_n_string*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
+  return_label938: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AEndStringExpr___n_string__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AEndStringExpr::n_string= (src/parser//parser_prod.nit:9948,5--9952:20)"};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___AMidStringExpr___empty_init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 10453, LOCATE_parser_prod___AMidStringExpr___empty_init};
+  val_t variable[2];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  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*/) /*TEndString::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*TEndString::parent=*/;
-  }
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AMidStringExpr].i]) return;
+  /* Register variable[1]: Method return value and escape marker */
+  return_label939: while(false);
+  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AMidStringExpr].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AEndStringExpr___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, "parser_prod::AEndStringExpr::empty_init (src/parser//parser_prod.nit:9956,5--27)"};
+void parser_prod___AMidStringExpr___init_amidstringexpr(val_t  self, val_t  param0, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 10455, LOCATE_parser_prod___AMidStringExpr___init_amidstringexpr};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AEndStringExpr].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AEndStringExpr].i] = 1;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AMidStringExpr].i]) return;
+  /* Register variable[2]: Method return value and escape marker */
+  CALL_parser_prod___AMidStringExpr___empty_init(variable[0])(variable[0], init_table /*YYY*/) /*AMidStringExpr::empty_init*/;
+  ATTR_parser_nodes___AMidStringExpr____n_string(variable[0]) /*AMidStringExpr::_n_string*/ =  variable[1] /*n_string*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_string*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_string*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n_string*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_string*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n_string*/)( variable[1] /*n_string*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n_string*/)( variable[1] /*n_string*/, variable[0]) /*PNode::parent=*/;
+  }
+  return_label940: while(false);
+  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AMidStringExpr].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, "parser_prod::AEndStringExpr::init_aendstringexpr (src/parser//parser_prod.nit:9958,5--9964:24)"};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  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*/) /*TEndString::==*/)))))));
-  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) /*TEndString::parent=*/;
+void parser_prod___AEndStringExpr___n_string__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 10496, LOCATE_parser_prod___AEndStringExpr___n_string__eq};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  ATTR_parser_nodes___AEndStringExpr____n_string(variable[0]) /*AEndStringExpr::_n_string*/ =  variable[1] /*n*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[0]) /*PNode::parent=*/;
   }
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AEndStringExpr].i] = 1;
+  return_label941: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AEndStringExpr___replace_child(val_t  self, val_t  param0, val_t  param1) {
-  struct trace_t trace = {NULL, "parser_prod::AEndStringExpr::replace_child (src/parser//parser_prod.nit:9968,5--9979:18)"};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  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*/) /*PNode::==*/)))))));
-  if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert failed: src/parser//parser_prod.nit:9970,9--32\n"); 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*/) /*TEndString::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*PNode::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_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 failed: src/parser//parser_prod.nit:9974,3--33\n"); 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_label891;
+  struct trace_t trace = {NULL, NULL, 10517, LOCATE_parser_prod___AEndStringExpr___replace_child};
+  val_t variable[5];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Local variable */
+  variable[2] =  param1;
+  /* Register variable[3]: Method return value and escape marker */
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AEndStringExpr___replace_child, LOCATE_parser_prod, 10519); nit_exit(1);}
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___AEndStringExpr____n_string(variable[0]) /*AEndStringExpr::_n_string*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*PNode::parent=*/;
+      /* Register variable[4]: Result */
+      variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_TEndString, ID_TEndString)) /*cast TEndString*/;
+      if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AEndStringExpr___replace_child, LOCATE_parser_prod, 10523); nit_exit(1);}
+      ATTR_parser_nodes___AEndStringExpr____n_string(variable[0]) /*AEndStringExpr::_n_string*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      ATTR_parser_nodes___AEndStringExpr____n_string(variable[0]) /*AEndStringExpr::_n_string*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label942;
   }
-  return_label891: while(false);
+  return_label942: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AEndStringExpr___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AEndStringExpr::visit_all (src/parser//parser_prod.nit:9983,5--9986:29)"};
-  val_t variable0;
-  val_t variable1;
+  struct trace_t trace = {NULL, NULL, 10532, LOCATE_parser_prod___AEndStringExpr___visit_all};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  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*/) /*TEndString::==*/)))))));
-  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*/;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AEndStringExpr____n_string(variable[0]) /*AEndStringExpr::_n_string*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AEndStringExpr____n_string(variable[0]) /*AEndStringExpr::_n_string*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
+  return_label943: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AEndStringExpr___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AEndStringExpr::visit_all_reverse (src/parser//parser_prod.nit:9990,5--9993:29)"};
-  val_t variable0;
-  val_t variable1;
+  struct trace_t trace = {NULL, NULL, 10539, LOCATE_parser_prod___AEndStringExpr___visit_all_reverse};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  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*/) /*TEndString::==*/)))))));
-  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*/;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AEndStringExpr____n_string(variable[0]) /*AEndStringExpr::_n_string*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AEndStringExpr____n_string(variable[0]) /*AEndStringExpr::_n_string*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
+  return_label944: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___ASuperstringExpr___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, "parser_prod::ASuperstringExpr::empty_init (src/parser//parser_prod.nit:9999,5--27)"};
+void parser_prod___AEndStringExpr___empty_init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 10504, LOCATE_parser_prod___AEndStringExpr___empty_init};
+  val_t variable[2];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ASuperstringExpr].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ASuperstringExpr].i] = 1;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AEndStringExpr].i]) return;
+  /* Register variable[1]: Method return value and escape marker */
+  return_label945: while(false);
+  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AEndStringExpr].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, "parser_prod::ASuperstringExpr::init_asuperstringexpr (src/parser//parser_prod.nit:10001,5--10009:17)"};
-  val_t variable0;
-  val_t variable1;
-    val_t variable2;
-    val_t variable3;
-  trace.prev = tracehead; tracehead = &trace;
-  variable0 =  param0;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ASuperstringExpr].i]) return;
-  variable1 = NEW_list___List___init(); /*new List[PExpr]*/
-  ATTR_parser_nodes___ASuperstringExpr____n_exprs( self) /*ASuperstringExpr::_n_exprs*/ = variable1;
-  variable1 = ((array___AbstractArray___iterator_t)CALL( variable0 /*n_exprs*/,COLOR_abstract_collection___Collection___iterator))( variable0 /*n_exprs*/) /*Array::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 failed: src/parser//parser_prod.nit:10007,3--20\n"); 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*/) /*List::add*/;
-    ((parser_prod___PNode___parent__eq_t)CALL( variable2 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable2 /*n*/,  self) /*PExpr::parent=*/;
-    continue_896: while(0);
-    ((array___ArrayIterator___next_t)CALL(variable1,COLOR_abstract_collection___Iterator___next))(variable1) /*ArrayIterator::next*/;
+void parser_prod___AEndStringExpr___init_aendstringexpr(val_t  self, val_t  param0, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 10506, LOCATE_parser_prod___AEndStringExpr___init_aendstringexpr};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AEndStringExpr].i]) return;
+  /* Register variable[2]: Method return value and escape marker */
+  CALL_parser_prod___AEndStringExpr___empty_init(variable[0])(variable[0], init_table /*YYY*/) /*AEndStringExpr::empty_init*/;
+  ATTR_parser_nodes___AEndStringExpr____n_string(variable[0]) /*AEndStringExpr::_n_string*/ =  variable[1] /*n_string*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_string*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_string*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n_string*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_string*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n_string*/)( variable[1] /*n_string*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n_string*/)( variable[1] /*n_string*/, variable[0]) /*PNode::parent=*/;
   }
-  break_896: while(0);
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ASuperstringExpr].i] = 1;
+  return_label946: while(false);
+  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AEndStringExpr].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, "parser_prod::ASuperstringExpr::replace_child (src/parser//parser_prod.nit:10013,5--10025:22)"};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  val_t variable3;
-    val_t variable4;
-  trace.prev = tracehead; tracehead = &trace;
-  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*/) /*PNode::==*/)))))));
-  if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert failed: src/parser//parser_prod.nit:10015,9--32\n"); 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[Int]*/
-  variable2 = variable3;
-  variable2 = ((range___Range___iterator_t)CALL(variable2,COLOR_abstract_collection___Collection___iterator))(variable2) /*Range::iterator*/;
+  struct trace_t trace = {NULL, NULL, 10563, LOCATE_parser_prod___ASuperstringExpr___replace_child};
+  val_t variable[8];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Local variable */
+  variable[2] =  param1;
+  /* Register variable[3]: Method return value and escape marker */
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ASuperstringExpr___replace_child, LOCATE_parser_prod, 10565); nit_exit(1);}
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___ASuperstringExpr____n_exprs(variable[0]) /*ASuperstringExpr::_n_exprs*/;
+  /* Register variable[4]: Result */
+  variable[4] = CALL_abstract_collection___Collection___length(variable[4])(variable[4]) /*List::length*/;
+  /* Register variable[4]: Result */
+  variable[4] = NEW_Range_range___Range___without_last( TAG_Int(0), variable[4]) /*new Range[Int]*/;
+  /* Register variable[4]: For iterator */
+  variable[4] = CALL_abstract_collection___Collection___iterator(variable[4])(variable[4]) /*Range::iterator*/;
   while (true) { /*for*/
-    variable3 = ((abstract_collection___Iterator___is_ok_t)CALL(variable2,COLOR_abstract_collection___Iterator___is_ok))(variable2) /*Iterator::is_ok*/;
-    if (!UNTAG_Bool(variable3)) break; /*for*/
-    variable3 = ((abstract_collection___Iterator___item_t)CALL(variable2,COLOR_abstract_collection___Iterator___item))(variable2) /*Iterator::item*/;
-    variable4 = ATTR_parser_nodes___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*/) /*PExpr::==*/)))));
-    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*/) /*PNode::==*/)))))));
-      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 failed: src/parser//parser_prod.nit:10019,7--32\n"); 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) /*PExpr::parent=*/;
+    /* Register variable[5]: For 'is_ok' result */
+    variable[5] = CALL_abstract_collection___Iterator___is_ok(variable[4])(variable[4]) /*Iterator::is_ok*/;
+    if (!UNTAG_Bool(variable[5])) break; /*for*/
+    variable[5] = CALL_abstract_collection___Iterator___item(variable[4])(variable[4]) /*Iterator::item*/ /* Ensure var: For item*/;
+    /* Register variable[6]: Local variable */
+    variable[6] = variable[5];
+    /* Register variable[7]: Result */
+    variable[7] = ATTR_parser_nodes___ASuperstringExpr____n_exprs(variable[0]) /*ASuperstringExpr::_n_exprs*/;
+    /* Register variable[7]: Result */
+    variable[7] = CALL_abstract_collection___MapRead_____bra(variable[7])(variable[7],  variable[6] /*i*/) /*List::[]*/;
+    /* Register variable[7]: Result */
+    variable[7] = TAG_Bool((variable[7] ==  variable[1] /*old_child*/) || ((variable[7] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[7])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[7], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[7])(variable[7],  variable[1] /*old_child*/) /*Object::==*/)))));
+    if (UNTAG_Bool(variable[7])) { /*if*/
+      /* Register variable[7]: Result */
+      variable[7] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+      if (UNTAG_Bool(variable[7])) { /*if*/
+        /* Register variable[7]: Result */
+        variable[7] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
+        if (!UNTAG_Bool(variable[7])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ASuperstringExpr___replace_child, LOCATE_parser_prod, 10569); nit_exit(1);}
+        /* Register variable[7]: Result */
+        variable[7] = ATTR_parser_nodes___ASuperstringExpr____n_exprs(variable[0]) /*ASuperstringExpr::_n_exprs*/;
+        CALL_abstract_collection___Map_____braeq(variable[7])(variable[7],  variable[6] /*i*/,  variable[2] /*new_child*/) /*List::[]=*/;
+        CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*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*/;
+        /* Register variable[7]: Result */
+        variable[7] = ATTR_parser_nodes___ASuperstringExpr____n_exprs(variable[0]) /*ASuperstringExpr::_n_exprs*/;
+        CALL_abstract_collection___Map___remove_at(variable[7])(variable[7],  variable[6] /*i*/) /*List::remove_at*/;
       }
-      goto return_label897;
+      goto return_label947;
     }
-    continue_898: while(0);
-    ((abstract_collection___Iterator___next_t)CALL(variable2,COLOR_abstract_collection___Iterator___next))(variable2) /*Iterator::next*/;
+    continue_948: while(0);
+    CALL_abstract_collection___Iterator___next(variable[4])(variable[4]) /*Iterator::next*/;
   }
-  break_898: while(0);
-  return_label897: while(false);
+  break_948: while(0);
+  return_label947: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___ASuperstringExpr___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::ASuperstringExpr::visit_all (src/parser//parser_prod.nit:10030,5--10033:25)"};
-  val_t variable0;
-  val_t variable1;
-    val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  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*/;
+  struct trace_t trace = {NULL, NULL, 10580, LOCATE_parser_prod___ASuperstringExpr___visit_all};
+  val_t variable[6];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___ASuperstringExpr____n_exprs(variable[0]) /*ASuperstringExpr::_n_exprs*/;
+  /* Register variable[3]: For iterator */
+  variable[3] = CALL_abstract_collection___Collection___iterator(variable[3])(variable[3]) /*List::iterator*/;
   while (true) { /*for*/
-    variable2 = ((list___ListIterator___is_ok_t)CALL(variable1,COLOR_abstract_collection___Iterator___is_ok))(variable1) /*ListIterator::is_ok*/;
-    if (!UNTAG_Bool(variable2)) break; /*for*/
-    variable2 = ((list___ListIterator___item_t)CALL(variable1,COLOR_abstract_collection___Iterator___item))(variable1) /*ListIterator::item*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/,  variable2 /*n*/) /*Visitor::visit*/;
-    continue_900: while(0);
-    ((list___ListIterator___next_t)CALL(variable1,COLOR_abstract_collection___Iterator___next))(variable1) /*ListIterator::next*/;
+    /* Register variable[4]: For 'is_ok' result */
+    variable[4] = CALL_abstract_collection___Iterator___is_ok(variable[3])(variable[3]) /*ListIterator::is_ok*/;
+    if (!UNTAG_Bool(variable[4])) break; /*for*/
+    variable[4] = CALL_abstract_collection___Iterator___item(variable[3])(variable[3]) /*ListIterator::item*/ /* Ensure var: For item*/;
+    /* Register variable[5]: Local variable */
+    variable[5] = variable[4];
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/,  variable[5] /*n*/) /*Visitor::visit*/;
+    continue_950: while(0);
+    CALL_abstract_collection___Iterator___next(variable[3])(variable[3]) /*ListIterator::next*/;
   }
-  break_900: while(0);
+  break_950: while(0);
+  return_label949: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___ASuperstringExpr___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::ASuperstringExpr::visit_all_reverse (src/parser//parser_prod.nit:10037,5--10043:11)"};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  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;
+  struct trace_t trace = {NULL, NULL, 10587, LOCATE_parser_prod___ASuperstringExpr___visit_all_reverse};
+  val_t variable[5];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  /* Register variable[3]: Local variable */
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___ASuperstringExpr____n_exprs(variable[0]) /*ASuperstringExpr::_n_exprs*/;
+  /* Register variable[4]: Result */
+  variable[4] = CALL_abstract_collection___Collection___length(variable[4])(variable[4]) /*List::length*/;
+  variable[3] = variable[4];
   while (true) { /*while*/
-    variable2 = TAG_Bool(UNTAG_Int( variable1 /*i*/)>=UNTAG_Int( TAG_Int(0)));
-    if (!UNTAG_Bool(variable2)) break; /* while*/
-    variable2 = ATTR_parser_nodes___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_902: while(0);
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(UNTAG_Int( variable[3] /*i*/)>=UNTAG_Int( TAG_Int(0)));
+    if (!UNTAG_Bool(variable[4])) break; /* while*/
+    /* Register variable[4]: Result */
+    variable[4] = ATTR_parser_nodes___ASuperstringExpr____n_exprs(variable[0]) /*ASuperstringExpr::_n_exprs*/;
+    /* Register variable[4]: Result */
+    variable[4] = CALL_abstract_collection___MapRead_____bra(variable[4])(variable[4],  variable[3] /*i*/) /*List::[]*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[4]) /*Visitor::visit*/;
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Int(UNTAG_Int( variable[3] /*i*/)-UNTAG_Int( TAG_Int(1)));
+    variable[3] = variable[4] /*i=*/;
+    continue_952: while(0);
   }
-  break_902: while(0);
+  break_952: while(0);
+  return_label951: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AParExpr___n_expr__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AParExpr::n_expr= (src/parser//parser_prod.nit:10049,5--10053:20)"};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___ASuperstringExpr___empty_init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 10548, LOCATE_parser_prod___ASuperstringExpr___empty_init};
+  val_t variable[2];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  variable0 =  param0;
-  ATTR_parser_nodes___AProxyExpr____n_expr( self) /*AParExpr::_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*/) /*PExpr::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PExpr::parent=*/;
-  }
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ASuperstringExpr].i]) return;
+  /* Register variable[1]: Method return value and escape marker */
+  return_label953: while(false);
+  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ASuperstringExpr].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AParExpr___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, "parser_prod::AParExpr::empty_init (src/parser//parser_prod.nit:10057,5--27)"};
-  trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AParExpr].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AParExpr].i] = 1;
+void parser_prod___ASuperstringExpr___init_asuperstringexpr(val_t  self, val_t  param0, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 10550, LOCATE_parser_prod___ASuperstringExpr___init_asuperstringexpr};
+  val_t variable[7];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ASuperstringExpr].i]) return;
+  /* Register variable[2]: Method return value and escape marker */
+  CALL_parser_prod___ASuperstringExpr___empty_init(variable[0])(variable[0], init_table /*YYY*/) /*ASuperstringExpr::empty_init*/;
+  /* Register variable[3]: Result */
+  variable[3] = NEW_List_list___List___init() /*new List[PExpr]*/;
+  ATTR_parser_nodes___ASuperstringExpr____n_exprs(variable[0]) /*ASuperstringExpr::_n_exprs*/ = variable[3];
+  /* Register variable[3]: For iterator */
+  variable[3] = CALL_abstract_collection___Collection___iterator( variable[1] /*n_exprs*/)( variable[1] /*n_exprs*/) /*Collection::iterator*/;
+  while (true) { /*for*/
+    /* Register variable[4]: For 'is_ok' result */
+    variable[4] = CALL_abstract_collection___Iterator___is_ok(variable[3])(variable[3]) /*Iterator::is_ok*/;
+    if (!UNTAG_Bool(variable[4])) break; /*for*/
+    variable[4] = CALL_abstract_collection___Iterator___item(variable[3])(variable[3]) /*Iterator::item*/ /* Ensure var: For item*/;
+    /* Register variable[5]: Local variable */
+    variable[5] = variable[4];
+    /* Register variable[6]: Result */
+    variable[6] = TAG_Bool(( variable[5] /*n*/==NIT_NULL) || VAL_ISA( variable[5] /*n*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
+    if (!UNTAG_Bool(variable[6])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ASuperstringExpr___init_asuperstringexpr, LOCATE_parser_prod, 10557); nit_exit(1);}
+    /* Register variable[6]: Result */
+    variable[6] = ATTR_parser_nodes___ASuperstringExpr____n_exprs(variable[0]) /*ASuperstringExpr::_n_exprs*/;
+    CALL_abstract_collection___SimpleCollection___add(variable[6])(variable[6],  variable[5] /*n*/) /*IndexedCollection::add*/;
+    CALL_parser_prod___PNode___parent__eq( variable[5] /*n*/)( variable[5] /*n*/, variable[0]) /*PNode::parent=*/;
+    continue_955: while(0);
+    CALL_abstract_collection___Iterator___next(variable[3])(variable[3]) /*Iterator::next*/;
+  }
+  break_955: while(0);
+  return_label954: while(false);
+  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ASuperstringExpr].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, "parser_prod::AParExpr::init_aparexpr (src/parser//parser_prod.nit:10059,5--10065:22)"};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___AParExpr___n_expr__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 10599, LOCATE_parser_prod___AParExpr___n_expr__eq};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  variable0 =  param0;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AParExpr].i]) return;
-  ATTR_parser_nodes___AProxyExpr____n_expr( self) /*AParExpr::_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*/) /*PExpr::==*/)))))));
-  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) /*PExpr::parent=*/;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  ATTR_parser_nodes___AProxyExpr____n_expr(variable[0]) /*AProxyExpr::_n_expr*/ =  variable[1] /*n*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[0]) /*PNode::parent=*/;
   }
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AParExpr].i] = 1;
+  return_label956: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AParExpr___replace_child(val_t  self, val_t  param0, val_t  param1) {
-  struct trace_t trace = {NULL, "parser_prod::AParExpr::replace_child (src/parser//parser_prod.nit:10069,5--10080:18)"};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  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*/) /*PNode::==*/)))))));
-  if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert failed: src/parser//parser_prod.nit:10071,9--32\n"); nit_exit(1);}
-  variable2 = ATTR_parser_nodes___AProxyExpr____n_expr( self) /*AParExpr::_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*/) /*PExpr::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*PNode::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_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 failed: src/parser//parser_prod.nit:10075,3--28\n"); nit_exit(1);}
-      ATTR_parser_nodes___AProxyExpr____n_expr( self) /*AParExpr::_n_expr*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___AProxyExpr____n_expr( self) /*AParExpr::_n_expr*/ =  NIT_NULL /*null*/;
+  struct trace_t trace = {NULL, NULL, 10620, LOCATE_parser_prod___AParExpr___replace_child};
+  val_t variable[5];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Local variable */
+  variable[2] =  param1;
+  /* Register variable[3]: Method return value and escape marker */
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AParExpr___replace_child, LOCATE_parser_prod, 10622); nit_exit(1);}
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___AProxyExpr____n_expr(variable[0]) /*AProxyExpr::_n_expr*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*PNode::parent=*/;
+      /* Register variable[4]: Result */
+      variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
+      if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AParExpr___replace_child, LOCATE_parser_prod, 10626); nit_exit(1);}
+      ATTR_parser_nodes___AProxyExpr____n_expr(variable[0]) /*AProxyExpr::_n_expr*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      ATTR_parser_nodes___AProxyExpr____n_expr(variable[0]) /*AProxyExpr::_n_expr*/ =  NIT_NULL /*null*/;
     }
-    goto return_label906;
+    goto return_label957;
   }
-  return_label906: while(false);
+  return_label957: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AParExpr___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AParExpr::visit_all (src/parser//parser_prod.nit:10084,5--10087:27)"};
-  val_t variable0;
-  val_t variable1;
+  struct trace_t trace = {NULL, NULL, 10635, LOCATE_parser_prod___AParExpr___visit_all};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___AProxyExpr____n_expr( self) /*AParExpr::_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*/) /*PExpr::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AProxyExpr____n_expr( self) /*AParExpr::_n_expr*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AProxyExpr____n_expr(variable[0]) /*AProxyExpr::_n_expr*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AProxyExpr____n_expr(variable[0]) /*AProxyExpr::_n_expr*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
+  return_label958: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AParExpr___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AParExpr::visit_all_reverse (src/parser//parser_prod.nit:10091,5--10094:27)"};
-  val_t variable0;
-  val_t variable1;
+  struct trace_t trace = {NULL, NULL, 10642, LOCATE_parser_prod___AParExpr___visit_all_reverse};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___AProxyExpr____n_expr( self) /*AParExpr::_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*/) /*PExpr::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AProxyExpr____n_expr( self) /*AParExpr::_n_expr*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AProxyExpr____n_expr(variable[0]) /*AProxyExpr::_n_expr*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AProxyExpr____n_expr(variable[0]) /*AProxyExpr::_n_expr*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
+  return_label959: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___APlusAssignOp___n_pluseq__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::APlusAssignOp::n_pluseq= (src/parser//parser_prod.nit:10099,5--10103:20)"};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___AParExpr___empty_init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 10607, LOCATE_parser_prod___AParExpr___empty_init};
+  val_t variable[2];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  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*/) /*TPluseq::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*TPluseq::parent=*/;
-  }
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AParExpr].i]) return;
+  /* Register variable[1]: Method return value and escape marker */
+  return_label960: while(false);
+  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AParExpr].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser_prod___APlusAssignOp___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, "parser_prod::APlusAssignOp::empty_init (src/parser//parser_prod.nit:10107,5--27)"};
-  trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_APlusAssignOp].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_APlusAssignOp].i] = 1;
+void parser_prod___AParExpr___init_aparexpr(val_t  self, val_t  param0, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 10609, LOCATE_parser_prod___AParExpr___init_aparexpr};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AParExpr].i]) return;
+  /* Register variable[2]: Method return value and escape marker */
+  CALL_parser_prod___AParExpr___empty_init(variable[0])(variable[0], init_table /*YYY*/) /*AParExpr::empty_init*/;
+  ATTR_parser_nodes___AProxyExpr____n_expr(variable[0]) /*AProxyExpr::_n_expr*/ =  variable[1] /*n_expr*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_expr*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_expr*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n_expr*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_expr*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n_expr*/)( variable[1] /*n_expr*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n_expr*/)( variable[1] /*n_expr*/, variable[0]) /*PNode::parent=*/;
+  }
+  return_label961: while(false);
+  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AParExpr].i] = 1;
+  tracehead = trace.prev;
+  return;
+}
+void parser_prod___AAsCastExpr___n_expr__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 10650, LOCATE_parser_prod___AAsCastExpr___n_expr__eq};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  ATTR_parser_nodes___AAsCastExpr____n_expr(variable[0]) /*AAsCastExpr::_n_expr*/ =  variable[1] /*n*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[0]) /*PNode::parent=*/;
+  }
+  return_label962: while(false);
+  tracehead = trace.prev;
+  return;
+}
+void parser_prod___AAsCastExpr___n_kwas__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 10657, LOCATE_parser_prod___AAsCastExpr___n_kwas__eq};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  ATTR_parser_nodes___AAsCastExpr____n_kwas(variable[0]) /*AAsCastExpr::_n_kwas*/ =  variable[1] /*n*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[0]) /*PNode::parent=*/;
+  }
+  return_label963: while(false);
+  tracehead = trace.prev;
+  return;
+}
+void parser_prod___AAsCastExpr___n_type__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 10664, LOCATE_parser_prod___AAsCastExpr___n_type__eq};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  ATTR_parser_nodes___AAsCastExpr____n_type(variable[0]) /*AAsCastExpr::_n_type*/ =  variable[1] /*n*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[0]) /*PNode::parent=*/;
+  }
+  return_label964: while(false);
+  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, 10695, LOCATE_parser_prod___AAsCastExpr___replace_child};
+  val_t variable[5];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Local variable */
+  variable[2] =  param1;
+  /* Register variable[3]: Method return value and escape marker */
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AAsCastExpr___replace_child, LOCATE_parser_prod, 10697); nit_exit(1);}
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___AAsCastExpr____n_expr(variable[0]) /*AAsCastExpr::_n_expr*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*PNode::parent=*/;
+      /* Register variable[4]: Result */
+      variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
+      if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AAsCastExpr___replace_child, LOCATE_parser_prod, 10701); nit_exit(1);}
+      ATTR_parser_nodes___AAsCastExpr____n_expr(variable[0]) /*AAsCastExpr::_n_expr*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      ATTR_parser_nodes___AAsCastExpr____n_expr(variable[0]) /*AAsCastExpr::_n_expr*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label965;
+  }
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___AAsCastExpr____n_kwas(variable[0]) /*AAsCastExpr::_n_kwas*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*PNode::parent=*/;
+      /* Register variable[4]: Result */
+      variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_TKwas, ID_TKwas)) /*cast TKwas*/;
+      if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AAsCastExpr___replace_child, LOCATE_parser_prod, 10711); nit_exit(1);}
+      ATTR_parser_nodes___AAsCastExpr____n_kwas(variable[0]) /*AAsCastExpr::_n_kwas*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      ATTR_parser_nodes___AAsCastExpr____n_kwas(variable[0]) /*AAsCastExpr::_n_kwas*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label965;
+  }
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___AAsCastExpr____n_type(variable[0]) /*AAsCastExpr::_n_type*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*PNode::parent=*/;
+      /* Register variable[4]: Result */
+      variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PType, ID_PType)) /*cast PType*/;
+      if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AAsCastExpr___replace_child, LOCATE_parser_prod, 10721); nit_exit(1);}
+      ATTR_parser_nodes___AAsCastExpr____n_type(variable[0]) /*AAsCastExpr::_n_type*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      ATTR_parser_nodes___AAsCastExpr____n_type(variable[0]) /*AAsCastExpr::_n_type*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label965;
+  }
+  return_label965: while(false);
+  tracehead = trace.prev;
+  return;
+}
+void parser_prod___AAsCastExpr___visit_all(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 10730, LOCATE_parser_prod___AAsCastExpr___visit_all};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AAsCastExpr____n_expr(variable[0]) /*AAsCastExpr::_n_expr*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AAsCastExpr____n_expr(variable[0]) /*AAsCastExpr::_n_expr*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AAsCastExpr____n_kwas(variable[0]) /*AAsCastExpr::_n_kwas*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AAsCastExpr____n_kwas(variable[0]) /*AAsCastExpr::_n_kwas*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AAsCastExpr____n_type(variable[0]) /*AAsCastExpr::_n_type*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AAsCastExpr____n_type(variable[0]) /*AAsCastExpr::_n_type*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  return_label966: while(false);
+  tracehead = trace.prev;
+  return;
+}
+void parser_prod___AAsCastExpr___visit_all_reverse(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 10743, LOCATE_parser_prod___AAsCastExpr___visit_all_reverse};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AAsCastExpr____n_expr(variable[0]) /*AAsCastExpr::_n_expr*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AAsCastExpr____n_expr(variable[0]) /*AAsCastExpr::_n_expr*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AAsCastExpr____n_kwas(variable[0]) /*AAsCastExpr::_n_kwas*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AAsCastExpr____n_kwas(variable[0]) /*AAsCastExpr::_n_kwas*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AAsCastExpr____n_type(variable[0]) /*AAsCastExpr::_n_type*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AAsCastExpr____n_type(variable[0]) /*AAsCastExpr::_n_type*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  return_label967: while(false);
+  tracehead = trace.prev;
+  return;
+}
+void parser_prod___AAsCastExpr___empty_init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 10672, LOCATE_parser_prod___AAsCastExpr___empty_init};
+  val_t variable[2];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AAsCastExpr].i]) return;
+  /* Register variable[1]: Method return value and escape marker */
+  return_label968: while(false);
+  init_table[VAL2OBJ(variable[0])->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, 10674, LOCATE_parser_prod___AAsCastExpr___init_aascastexpr};
+  val_t variable[6];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Local variable */
+  variable[2] =  param1;
+  /* Register variable[3]: Local variable */
+  variable[3] =  param2;
+  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AAsCastExpr].i]) return;
+  /* Register variable[4]: Method return value and escape marker */
+  CALL_parser_prod___AAsCastExpr___empty_init(variable[0])(variable[0], init_table /*YYY*/) /*AAsCastExpr::empty_init*/;
+  ATTR_parser_nodes___AAsCastExpr____n_expr(variable[0]) /*AAsCastExpr::_n_expr*/ =  variable[1] /*n_expr*/;
+  /* Register variable[5]: Result */
+  variable[5] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_expr*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_expr*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n_expr*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_expr*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n_expr*/)( variable[1] /*n_expr*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[5])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n_expr*/)( variable[1] /*n_expr*/, variable[0]) /*PNode::parent=*/;
+  }
+  ATTR_parser_nodes___AAsCastExpr____n_kwas(variable[0]) /*AAsCastExpr::_n_kwas*/ =  variable[2] /*n_kwas*/;
+  /* Register variable[5]: Result */
+  variable[5] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*n_kwas*/ ==  NIT_NULL /*null*/) || (( variable[2] /*n_kwas*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*n_kwas*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*n_kwas*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*n_kwas*/)( variable[2] /*n_kwas*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[5])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[2] /*n_kwas*/)( variable[2] /*n_kwas*/, variable[0]) /*PNode::parent=*/;
+  }
+  ATTR_parser_nodes___AAsCastExpr____n_type(variable[0]) /*AAsCastExpr::_n_type*/ =  variable[3] /*n_type*/;
+  /* Register variable[5]: Result */
+  variable[5] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[3] /*n_type*/ ==  NIT_NULL /*null*/) || (( variable[3] /*n_type*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[3] /*n_type*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[3] /*n_type*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[3] /*n_type*/)( variable[3] /*n_type*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[5])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[3] /*n_type*/)( variable[3] /*n_type*/, variable[0]) /*PNode::parent=*/;
+  }
+  return_label969: while(false);
+  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AAsCastExpr].i] = 1;
+  tracehead = trace.prev;
+  return;
+}
+void parser_prod___AAsNotnullExpr___n_expr__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 10757, LOCATE_parser_prod___AAsNotnullExpr___n_expr__eq};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  ATTR_parser_nodes___AAsNotnullExpr____n_expr(variable[0]) /*AAsNotnullExpr::_n_expr*/ =  variable[1] /*n*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[0]) /*PNode::parent=*/;
+  }
+  return_label970: while(false);
+  tracehead = trace.prev;
+  return;
+}
+void parser_prod___AAsNotnullExpr___n_kwas__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 10764, LOCATE_parser_prod___AAsNotnullExpr___n_kwas__eq};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  ATTR_parser_nodes___AAsNotnullExpr____n_kwas(variable[0]) /*AAsNotnullExpr::_n_kwas*/ =  variable[1] /*n*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[0]) /*PNode::parent=*/;
+  }
+  return_label971: while(false);
+  tracehead = trace.prev;
+  return;
+}
+void parser_prod___AAsNotnullExpr___n_kwnot__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 10771, LOCATE_parser_prod___AAsNotnullExpr___n_kwnot__eq};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  ATTR_parser_nodes___AAsNotnullExpr____n_kwnot(variable[0]) /*AAsNotnullExpr::_n_kwnot*/ =  variable[1] /*n*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[0]) /*PNode::parent=*/;
+  }
+  return_label972: while(false);
+  tracehead = trace.prev;
+  return;
+}
+void parser_prod___AAsNotnullExpr___n_kwnull__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 10778, LOCATE_parser_prod___AAsNotnullExpr___n_kwnull__eq};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  ATTR_parser_nodes___AAsNotnullExpr____n_kwnull(variable[0]) /*AAsNotnullExpr::_n_kwnull*/ =  variable[1] /*n*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[0]) /*PNode::parent=*/;
+  }
+  return_label973: while(false);
+  tracehead = trace.prev;
+  return;
+}
+void parser_prod___AAsNotnullExpr___replace_child(val_t  self, val_t  param0, val_t  param1) {
+  struct trace_t trace = {NULL, NULL, 10814, LOCATE_parser_prod___AAsNotnullExpr___replace_child};
+  val_t variable[5];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Local variable */
+  variable[2] =  param1;
+  /* Register variable[3]: Method return value and escape marker */
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AAsNotnullExpr___replace_child, LOCATE_parser_prod, 10816); nit_exit(1);}
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___AAsNotnullExpr____n_expr(variable[0]) /*AAsNotnullExpr::_n_expr*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*PNode::parent=*/;
+      /* Register variable[4]: Result */
+      variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
+      if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AAsNotnullExpr___replace_child, LOCATE_parser_prod, 10820); nit_exit(1);}
+      ATTR_parser_nodes___AAsNotnullExpr____n_expr(variable[0]) /*AAsNotnullExpr::_n_expr*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      ATTR_parser_nodes___AAsNotnullExpr____n_expr(variable[0]) /*AAsNotnullExpr::_n_expr*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label974;
+  }
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___AAsNotnullExpr____n_kwas(variable[0]) /*AAsNotnullExpr::_n_kwas*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*PNode::parent=*/;
+      /* Register variable[4]: Result */
+      variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_TKwas, ID_TKwas)) /*cast TKwas*/;
+      if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AAsNotnullExpr___replace_child, LOCATE_parser_prod, 10830); nit_exit(1);}
+      ATTR_parser_nodes___AAsNotnullExpr____n_kwas(variable[0]) /*AAsNotnullExpr::_n_kwas*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      ATTR_parser_nodes___AAsNotnullExpr____n_kwas(variable[0]) /*AAsNotnullExpr::_n_kwas*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label974;
+  }
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___AAsNotnullExpr____n_kwnot(variable[0]) /*AAsNotnullExpr::_n_kwnot*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*PNode::parent=*/;
+      /* Register variable[4]: Result */
+      variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_TKwnot, ID_TKwnot)) /*cast TKwnot*/;
+      if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AAsNotnullExpr___replace_child, LOCATE_parser_prod, 10840); nit_exit(1);}
+      ATTR_parser_nodes___AAsNotnullExpr____n_kwnot(variable[0]) /*AAsNotnullExpr::_n_kwnot*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      ATTR_parser_nodes___AAsNotnullExpr____n_kwnot(variable[0]) /*AAsNotnullExpr::_n_kwnot*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label974;
+  }
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___AAsNotnullExpr____n_kwnull(variable[0]) /*AAsNotnullExpr::_n_kwnull*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*PNode::parent=*/;
+      /* Register variable[4]: Result */
+      variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_TKwnull, ID_TKwnull)) /*cast TKwnull*/;
+      if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AAsNotnullExpr___replace_child, LOCATE_parser_prod, 10850); nit_exit(1);}
+      ATTR_parser_nodes___AAsNotnullExpr____n_kwnull(variable[0]) /*AAsNotnullExpr::_n_kwnull*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      ATTR_parser_nodes___AAsNotnullExpr____n_kwnull(variable[0]) /*AAsNotnullExpr::_n_kwnull*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label974;
+  }
+  return_label974: while(false);
+  tracehead = trace.prev;
+  return;
+}
+void parser_prod___AAsNotnullExpr___visit_all(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 10859, LOCATE_parser_prod___AAsNotnullExpr___visit_all};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AAsNotnullExpr____n_expr(variable[0]) /*AAsNotnullExpr::_n_expr*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AAsNotnullExpr____n_expr(variable[0]) /*AAsNotnullExpr::_n_expr*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AAsNotnullExpr____n_kwas(variable[0]) /*AAsNotnullExpr::_n_kwas*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AAsNotnullExpr____n_kwas(variable[0]) /*AAsNotnullExpr::_n_kwas*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AAsNotnullExpr____n_kwnot(variable[0]) /*AAsNotnullExpr::_n_kwnot*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AAsNotnullExpr____n_kwnot(variable[0]) /*AAsNotnullExpr::_n_kwnot*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AAsNotnullExpr____n_kwnull(variable[0]) /*AAsNotnullExpr::_n_kwnull*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AAsNotnullExpr____n_kwnull(variable[0]) /*AAsNotnullExpr::_n_kwnull*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  return_label975: while(false);
+  tracehead = trace.prev;
+  return;
+}
+void parser_prod___AAsNotnullExpr___visit_all_reverse(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 10875, LOCATE_parser_prod___AAsNotnullExpr___visit_all_reverse};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AAsNotnullExpr____n_expr(variable[0]) /*AAsNotnullExpr::_n_expr*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AAsNotnullExpr____n_expr(variable[0]) /*AAsNotnullExpr::_n_expr*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AAsNotnullExpr____n_kwas(variable[0]) /*AAsNotnullExpr::_n_kwas*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AAsNotnullExpr____n_kwas(variable[0]) /*AAsNotnullExpr::_n_kwas*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AAsNotnullExpr____n_kwnot(variable[0]) /*AAsNotnullExpr::_n_kwnot*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AAsNotnullExpr____n_kwnot(variable[0]) /*AAsNotnullExpr::_n_kwnot*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AAsNotnullExpr____n_kwnull(variable[0]) /*AAsNotnullExpr::_n_kwnull*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AAsNotnullExpr____n_kwnull(variable[0]) /*AAsNotnullExpr::_n_kwnull*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  return_label976: while(false);
+  tracehead = trace.prev;
+  return;
+}
+void parser_prod___AAsNotnullExpr___empty_init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 10786, LOCATE_parser_prod___AAsNotnullExpr___empty_init};
+  val_t variable[2];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AAsNotnullExpr].i]) return;
+  /* Register variable[1]: Method return value and escape marker */
+  return_label977: while(false);
+  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AAsNotnullExpr].i] = 1;
+  tracehead = trace.prev;
+  return;
+}
+void parser_prod___AAsNotnullExpr___init_aasnotnullexpr(val_t  self, val_t  param0, val_t  param1, val_t  param2, val_t  param3, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 10788, LOCATE_parser_prod___AAsNotnullExpr___init_aasnotnullexpr};
+  val_t variable[7];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Local variable */
+  variable[2] =  param1;
+  /* Register variable[3]: Local variable */
+  variable[3] =  param2;
+  /* Register variable[4]: Local variable */
+  variable[4] =  param3;
+  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AAsNotnullExpr].i]) return;
+  /* Register variable[5]: Method return value and escape marker */
+  CALL_parser_prod___AAsNotnullExpr___empty_init(variable[0])(variable[0], init_table /*YYY*/) /*AAsNotnullExpr::empty_init*/;
+  ATTR_parser_nodes___AAsNotnullExpr____n_expr(variable[0]) /*AAsNotnullExpr::_n_expr*/ =  variable[1] /*n_expr*/;
+  /* Register variable[6]: Result */
+  variable[6] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_expr*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_expr*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n_expr*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_expr*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n_expr*/)( variable[1] /*n_expr*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[6])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n_expr*/)( variable[1] /*n_expr*/, variable[0]) /*PNode::parent=*/;
+  }
+  ATTR_parser_nodes___AAsNotnullExpr____n_kwas(variable[0]) /*AAsNotnullExpr::_n_kwas*/ =  variable[2] /*n_kwas*/;
+  /* Register variable[6]: Result */
+  variable[6] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*n_kwas*/ ==  NIT_NULL /*null*/) || (( variable[2] /*n_kwas*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*n_kwas*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*n_kwas*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*n_kwas*/)( variable[2] /*n_kwas*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[6])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[2] /*n_kwas*/)( variable[2] /*n_kwas*/, variable[0]) /*PNode::parent=*/;
+  }
+  ATTR_parser_nodes___AAsNotnullExpr____n_kwnot(variable[0]) /*AAsNotnullExpr::_n_kwnot*/ =  variable[3] /*n_kwnot*/;
+  /* Register variable[6]: Result */
+  variable[6] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[3] /*n_kwnot*/ ==  NIT_NULL /*null*/) || (( variable[3] /*n_kwnot*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[3] /*n_kwnot*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[3] /*n_kwnot*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[3] /*n_kwnot*/)( variable[3] /*n_kwnot*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[6])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[3] /*n_kwnot*/)( variable[3] /*n_kwnot*/, variable[0]) /*PNode::parent=*/;
+  }
+  ATTR_parser_nodes___AAsNotnullExpr____n_kwnull(variable[0]) /*AAsNotnullExpr::_n_kwnull*/ =  variable[4] /*n_kwnull*/;
+  /* Register variable[6]: Result */
+  variable[6] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[4] /*n_kwnull*/ ==  NIT_NULL /*null*/) || (( variable[4] /*n_kwnull*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[4] /*n_kwnull*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[4] /*n_kwnull*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[4] /*n_kwnull*/)( variable[4] /*n_kwnull*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[6])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[4] /*n_kwnull*/)( variable[4] /*n_kwnull*/, variable[0]) /*PNode::parent=*/;
+  }
+  return_label978: while(false);
+  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AAsNotnullExpr].i] = 1;
+  tracehead = trace.prev;
+  return;
+}
+void parser_prod___AIssetAttrExpr___n_expr__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 10899, LOCATE_parser_prod___AIssetAttrExpr___n_expr__eq};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  ATTR_parser_nodes___AAttrFormExpr____n_expr(variable[0]) /*AAttrFormExpr::_n_expr*/ =  variable[1] /*n*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[0]) /*PNode::parent=*/;
+  }
+  return_label979: while(false);
+  tracehead = trace.prev;
+  return;
+}
+void parser_prod___AIssetAttrExpr___n_id__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 10906, LOCATE_parser_prod___AIssetAttrExpr___n_id__eq};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  ATTR_parser_nodes___AAttrFormExpr____n_id(variable[0]) /*AAttrFormExpr::_n_id*/ =  variable[1] /*n*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[0]) /*PNode::parent=*/;
+  }
+  return_label980: while(false);
+  tracehead = trace.prev;
+  return;
+}
+void parser_prod___AIssetAttrExpr___n_kwisset__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 10892, LOCATE_parser_prod___AIssetAttrExpr___n_kwisset__eq};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  ATTR_parser_nodes___AIssetAttrExpr____n_kwisset(variable[0]) /*AIssetAttrExpr::_n_kwisset*/ =  variable[1] /*n*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[0]) /*PNode::parent=*/;
+  }
+  return_label981: while(false);
+  tracehead = trace.prev;
+  return;
+}
+void parser_prod___AIssetAttrExpr___replace_child(val_t  self, val_t  param0, val_t  param1) {
+  struct trace_t trace = {NULL, NULL, 10937, LOCATE_parser_prod___AIssetAttrExpr___replace_child};
+  val_t variable[5];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Local variable */
+  variable[2] =  param1;
+  /* Register variable[3]: Method return value and escape marker */
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AIssetAttrExpr___replace_child, LOCATE_parser_prod, 10939); nit_exit(1);}
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___AIssetAttrExpr____n_kwisset(variable[0]) /*AIssetAttrExpr::_n_kwisset*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*PNode::parent=*/;
+      /* Register variable[4]: Result */
+      variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_TKwisset, ID_TKwisset)) /*cast TKwisset*/;
+      if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AIssetAttrExpr___replace_child, LOCATE_parser_prod, 10943); nit_exit(1);}
+      ATTR_parser_nodes___AIssetAttrExpr____n_kwisset(variable[0]) /*AIssetAttrExpr::_n_kwisset*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      ATTR_parser_nodes___AIssetAttrExpr____n_kwisset(variable[0]) /*AIssetAttrExpr::_n_kwisset*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label982;
+  }
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___AAttrFormExpr____n_expr(variable[0]) /*AAttrFormExpr::_n_expr*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*PNode::parent=*/;
+      /* Register variable[4]: Result */
+      variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
+      if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AIssetAttrExpr___replace_child, LOCATE_parser_prod, 10953); nit_exit(1);}
+      ATTR_parser_nodes___AAttrFormExpr____n_expr(variable[0]) /*AAttrFormExpr::_n_expr*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      ATTR_parser_nodes___AAttrFormExpr____n_expr(variable[0]) /*AAttrFormExpr::_n_expr*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label982;
+  }
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___AAttrFormExpr____n_id(variable[0]) /*AAttrFormExpr::_n_id*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*PNode::parent=*/;
+      /* Register variable[4]: Result */
+      variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_TAttrid, ID_TAttrid)) /*cast TAttrid*/;
+      if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AIssetAttrExpr___replace_child, LOCATE_parser_prod, 10963); nit_exit(1);}
+      ATTR_parser_nodes___AAttrFormExpr____n_id(variable[0]) /*AAttrFormExpr::_n_id*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      ATTR_parser_nodes___AAttrFormExpr____n_id(variable[0]) /*AAttrFormExpr::_n_id*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label982;
+  }
+  return_label982: while(false);
+  tracehead = trace.prev;
+  return;
+}
+void parser_prod___AIssetAttrExpr___visit_all(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 10972, LOCATE_parser_prod___AIssetAttrExpr___visit_all};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AIssetAttrExpr____n_kwisset(variable[0]) /*AIssetAttrExpr::_n_kwisset*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AIssetAttrExpr____n_kwisset(variable[0]) /*AIssetAttrExpr::_n_kwisset*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AAttrFormExpr____n_expr(variable[0]) /*AAttrFormExpr::_n_expr*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AAttrFormExpr____n_expr(variable[0]) /*AAttrFormExpr::_n_expr*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AAttrFormExpr____n_id(variable[0]) /*AAttrFormExpr::_n_id*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AAttrFormExpr____n_id(variable[0]) /*AAttrFormExpr::_n_id*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  return_label983: while(false);
+  tracehead = trace.prev;
+  return;
+}
+void parser_prod___AIssetAttrExpr___visit_all_reverse(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 10985, LOCATE_parser_prod___AIssetAttrExpr___visit_all_reverse};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AIssetAttrExpr____n_kwisset(variable[0]) /*AIssetAttrExpr::_n_kwisset*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AIssetAttrExpr____n_kwisset(variable[0]) /*AIssetAttrExpr::_n_kwisset*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AAttrFormExpr____n_expr(variable[0]) /*AAttrFormExpr::_n_expr*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AAttrFormExpr____n_expr(variable[0]) /*AAttrFormExpr::_n_expr*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AAttrFormExpr____n_id(variable[0]) /*AAttrFormExpr::_n_id*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AAttrFormExpr____n_id(variable[0]) /*AAttrFormExpr::_n_id*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  return_label984: while(false);
+  tracehead = trace.prev;
+  return;
+}
+void parser_prod___AIssetAttrExpr___empty_init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 10914, LOCATE_parser_prod___AIssetAttrExpr___empty_init};
+  val_t variable[2];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AIssetAttrExpr].i]) return;
+  /* Register variable[1]: Method return value and escape marker */
+  return_label985: while(false);
+  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AIssetAttrExpr].i] = 1;
+  tracehead = trace.prev;
+  return;
+}
+void parser_prod___AIssetAttrExpr___init_aissetattrexpr(val_t  self, val_t  param0, val_t  param1, val_t  param2, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 10916, LOCATE_parser_prod___AIssetAttrExpr___init_aissetattrexpr};
+  val_t variable[6];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Local variable */
+  variable[2] =  param1;
+  /* Register variable[3]: Local variable */
+  variable[3] =  param2;
+  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AIssetAttrExpr].i]) return;
+  /* Register variable[4]: Method return value and escape marker */
+  CALL_parser_prod___AIssetAttrExpr___empty_init(variable[0])(variable[0], init_table /*YYY*/) /*AIssetAttrExpr::empty_init*/;
+  ATTR_parser_nodes___AIssetAttrExpr____n_kwisset(variable[0]) /*AIssetAttrExpr::_n_kwisset*/ =  variable[1] /*n_kwisset*/;
+  /* Register variable[5]: Result */
+  variable[5] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_kwisset*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_kwisset*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n_kwisset*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_kwisset*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n_kwisset*/)( variable[1] /*n_kwisset*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[5])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n_kwisset*/)( variable[1] /*n_kwisset*/, variable[0]) /*PNode::parent=*/;
+  }
+  ATTR_parser_nodes___AAttrFormExpr____n_expr(variable[0]) /*AAttrFormExpr::_n_expr*/ =  variable[2] /*n_expr*/;
+  /* Register variable[5]: Result */
+  variable[5] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*n_expr*/ ==  NIT_NULL /*null*/) || (( variable[2] /*n_expr*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*n_expr*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*n_expr*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*n_expr*/)( variable[2] /*n_expr*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[5])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[2] /*n_expr*/)( variable[2] /*n_expr*/, variable[0]) /*PNode::parent=*/;
+  }
+  ATTR_parser_nodes___AAttrFormExpr____n_id(variable[0]) /*AAttrFormExpr::_n_id*/ =  variable[3] /*n_id*/;
+  /* Register variable[5]: Result */
+  variable[5] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[3] /*n_id*/ ==  NIT_NULL /*null*/) || (( variable[3] /*n_id*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[3] /*n_id*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[3] /*n_id*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[3] /*n_id*/)( variable[3] /*n_id*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[5])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[3] /*n_id*/)( variable[3] /*n_id*/, variable[0]) /*PNode::parent=*/;
+  }
+  return_label986: while(false);
+  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AIssetAttrExpr].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, "parser_prod::APlusAssignOp::init_aplusassignop (src/parser//parser_prod.nit:10109,5--10115:24)"};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___APlusAssignOp___n_pluseq__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 10999, LOCATE_parser_prod___APlusAssignOp___n_pluseq__eq};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  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*/) /*TPluseq::==*/)))))));
-  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) /*TPluseq::parent=*/;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  ATTR_parser_nodes___APlusAssignOp____n_pluseq(variable[0]) /*APlusAssignOp::_n_pluseq*/ =  variable[1] /*n*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[0]) /*PNode::parent=*/;
   }
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_APlusAssignOp].i] = 1;
+  return_label987: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___APlusAssignOp___replace_child(val_t  self, val_t  param0, val_t  param1) {
-  struct trace_t trace = {NULL, "parser_prod::APlusAssignOp::replace_child (src/parser//parser_prod.nit:10119,5--10130:18)"};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  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*/) /*PNode::==*/)))))));
-  if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert failed: src/parser//parser_prod.nit:10121,9--32\n"); 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*/) /*TPluseq::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*PNode::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_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 failed: src/parser//parser_prod.nit:10125,3--30\n"); 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*/;
+  struct trace_t trace = {NULL, NULL, 11020, LOCATE_parser_prod___APlusAssignOp___replace_child};
+  val_t variable[5];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Local variable */
+  variable[2] =  param1;
+  /* Register variable[3]: Method return value and escape marker */
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___APlusAssignOp___replace_child, LOCATE_parser_prod, 11022); nit_exit(1);}
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___APlusAssignOp____n_pluseq(variable[0]) /*APlusAssignOp::_n_pluseq*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*PNode::parent=*/;
+      /* Register variable[4]: Result */
+      variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_TPluseq, ID_TPluseq)) /*cast TPluseq*/;
+      if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___APlusAssignOp___replace_child, LOCATE_parser_prod, 11026); nit_exit(1);}
+      ATTR_parser_nodes___APlusAssignOp____n_pluseq(variable[0]) /*APlusAssignOp::_n_pluseq*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      ATTR_parser_nodes___APlusAssignOp____n_pluseq(variable[0]) /*APlusAssignOp::_n_pluseq*/ =  NIT_NULL /*null*/;
     }
-    goto return_label912;
+    goto return_label988;
   }
-  return_label912: while(false);
+  return_label988: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___APlusAssignOp___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::APlusAssignOp::visit_all (src/parser//parser_prod.nit:10134,5--10137:29)"};
-  val_t variable0;
-  val_t variable1;
+  struct trace_t trace = {NULL, NULL, 11035, LOCATE_parser_prod___APlusAssignOp___visit_all};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  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*/) /*TPluseq::==*/)))))));
-  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*/;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___APlusAssignOp____n_pluseq(variable[0]) /*APlusAssignOp::_n_pluseq*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___APlusAssignOp____n_pluseq(variable[0]) /*APlusAssignOp::_n_pluseq*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
+  return_label989: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___APlusAssignOp___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::APlusAssignOp::visit_all_reverse (src/parser//parser_prod.nit:10141,5--10144:29)"};
-  val_t variable0;
-  val_t variable1;
+  struct trace_t trace = {NULL, NULL, 11042, LOCATE_parser_prod___APlusAssignOp___visit_all_reverse};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  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*/) /*TPluseq::==*/)))))));
-  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*/;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___APlusAssignOp____n_pluseq(variable[0]) /*APlusAssignOp::_n_pluseq*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___APlusAssignOp____n_pluseq(variable[0]) /*APlusAssignOp::_n_pluseq*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
+  return_label990: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AMinusAssignOp___n_minuseq__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AMinusAssignOp::n_minuseq= (src/parser//parser_prod.nit:10149,5--10153:20)"};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___APlusAssignOp___empty_init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 11007, LOCATE_parser_prod___APlusAssignOp___empty_init};
+  val_t variable[2];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  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*/) /*TMinuseq::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*TMinuseq::parent=*/;
-  }
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_APlusAssignOp].i]) return;
+  /* Register variable[1]: Method return value and escape marker */
+  return_label991: while(false);
+  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_APlusAssignOp].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AMinusAssignOp___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, "parser_prod::AMinusAssignOp::empty_init (src/parser//parser_prod.nit:10157,5--27)"};
+void parser_prod___APlusAssignOp___init_aplusassignop(val_t  self, val_t  param0, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 11009, LOCATE_parser_prod___APlusAssignOp___init_aplusassignop};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AMinusAssignOp].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AMinusAssignOp].i] = 1;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_APlusAssignOp].i]) return;
+  /* Register variable[2]: Method return value and escape marker */
+  CALL_parser_prod___APlusAssignOp___empty_init(variable[0])(variable[0], init_table /*YYY*/) /*APlusAssignOp::empty_init*/;
+  ATTR_parser_nodes___APlusAssignOp____n_pluseq(variable[0]) /*APlusAssignOp::_n_pluseq*/ =  variable[1] /*n_pluseq*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_pluseq*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_pluseq*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n_pluseq*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_pluseq*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n_pluseq*/)( variable[1] /*n_pluseq*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n_pluseq*/)( variable[1] /*n_pluseq*/, variable[0]) /*PNode::parent=*/;
+  }
+  return_label992: while(false);
+  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_APlusAssignOp].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, "parser_prod::AMinusAssignOp::init_aminusassignop (src/parser//parser_prod.nit:10159,5--10165:25)"};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___AMinusAssignOp___n_minuseq__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 11050, LOCATE_parser_prod___AMinusAssignOp___n_minuseq__eq};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  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*/) /*TMinuseq::==*/)))))));
-  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) /*TMinuseq::parent=*/;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  ATTR_parser_nodes___AMinusAssignOp____n_minuseq(variable[0]) /*AMinusAssignOp::_n_minuseq*/ =  variable[1] /*n*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[0]) /*PNode::parent=*/;
   }
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AMinusAssignOp].i] = 1;
+  return_label993: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AMinusAssignOp___replace_child(val_t  self, val_t  param0, val_t  param1) {
-  struct trace_t trace = {NULL, "parser_prod::AMinusAssignOp::replace_child (src/parser//parser_prod.nit:10169,5--10180:18)"};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  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*/) /*PNode::==*/)))))));
-  if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert failed: src/parser//parser_prod.nit:10171,9--32\n"); 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*/) /*TMinuseq::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*PNode::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_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 failed: src/parser//parser_prod.nit:10175,3--31\n"); 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*/;
+  struct trace_t trace = {NULL, NULL, 11071, LOCATE_parser_prod___AMinusAssignOp___replace_child};
+  val_t variable[5];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Local variable */
+  variable[2] =  param1;
+  /* Register variable[3]: Method return value and escape marker */
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AMinusAssignOp___replace_child, LOCATE_parser_prod, 11073); nit_exit(1);}
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___AMinusAssignOp____n_minuseq(variable[0]) /*AMinusAssignOp::_n_minuseq*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*PNode::parent=*/;
+      /* Register variable[4]: Result */
+      variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_TMinuseq, ID_TMinuseq)) /*cast TMinuseq*/;
+      if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AMinusAssignOp___replace_child, LOCATE_parser_prod, 11077); nit_exit(1);}
+      ATTR_parser_nodes___AMinusAssignOp____n_minuseq(variable[0]) /*AMinusAssignOp::_n_minuseq*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      ATTR_parser_nodes___AMinusAssignOp____n_minuseq(variable[0]) /*AMinusAssignOp::_n_minuseq*/ =  NIT_NULL /*null*/;
     }
-    goto return_label918;
+    goto return_label994;
   }
-  return_label918: while(false);
+  return_label994: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AMinusAssignOp___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AMinusAssignOp::visit_all (src/parser//parser_prod.nit:10184,5--10187:30)"};
-  val_t variable0;
-  val_t variable1;
+  struct trace_t trace = {NULL, NULL, 11086, LOCATE_parser_prod___AMinusAssignOp___visit_all};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  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*/) /*TMinuseq::==*/)))))));
-  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*/;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AMinusAssignOp____n_minuseq(variable[0]) /*AMinusAssignOp::_n_minuseq*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AMinusAssignOp____n_minuseq(variable[0]) /*AMinusAssignOp::_n_minuseq*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
+  return_label995: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AMinusAssignOp___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AMinusAssignOp::visit_all_reverse (src/parser//parser_prod.nit:10191,5--10194:30)"};
-  val_t variable0;
-  val_t variable1;
+  struct trace_t trace = {NULL, NULL, 11093, LOCATE_parser_prod___AMinusAssignOp___visit_all_reverse};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  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*/) /*TMinuseq::==*/)))))));
-  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*/;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AMinusAssignOp____n_minuseq(variable[0]) /*AMinusAssignOp::_n_minuseq*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AMinusAssignOp____n_minuseq(variable[0]) /*AMinusAssignOp::_n_minuseq*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
+  return_label996: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AQualified___n_classid__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AQualified::n_classid= (src/parser//parser_prod.nit:10199,5--10203:20)"};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___AMinusAssignOp___empty_init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 11058, LOCATE_parser_prod___AMinusAssignOp___empty_init};
+  val_t variable[2];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  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*/) /*TClassid::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*TClassid::parent=*/;
-  }
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AMinusAssignOp].i]) return;
+  /* Register variable[1]: Method return value and escape marker */
+  return_label997: while(false);
+  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AMinusAssignOp].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AQualified___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, "parser_prod::AQualified::empty_init (src/parser//parser_prod.nit:10207,5--27)"};
-  trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AQualified].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AQualified].i] = 1;
+void parser_prod___AMinusAssignOp___init_aminusassignop(val_t  self, val_t  param0, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 11060, LOCATE_parser_prod___AMinusAssignOp___init_aminusassignop};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AMinusAssignOp].i]) return;
+  /* Register variable[2]: Method return value and escape marker */
+  CALL_parser_prod___AMinusAssignOp___empty_init(variable[0])(variable[0], init_table /*YYY*/) /*AMinusAssignOp::empty_init*/;
+  ATTR_parser_nodes___AMinusAssignOp____n_minuseq(variable[0]) /*AMinusAssignOp::_n_minuseq*/ =  variable[1] /*n_minuseq*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_minuseq*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_minuseq*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n_minuseq*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_minuseq*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n_minuseq*/)( variable[1] /*n_minuseq*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n_minuseq*/)( variable[1] /*n_minuseq*/, variable[0]) /*PNode::parent=*/;
+  }
+  return_label998: while(false);
+  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AMinusAssignOp].i] = 1;
+  tracehead = trace.prev;
+  return;
+}
+void parser_prod___AClosureDef___n_kwwith__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 11101, LOCATE_parser_prod___AClosureDef___n_kwwith__eq};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  ATTR_parser_nodes___AClosureDef____n_kwwith(variable[0]) /*AClosureDef::_n_kwwith*/ =  variable[1] /*n*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[0]) /*PNode::parent=*/;
+  }
+  return_label999: while(false);
+  tracehead = trace.prev;
+  return;
+}
+void parser_prod___AClosureDef___n_kwdo__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 11108, LOCATE_parser_prod___AClosureDef___n_kwdo__eq};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  ATTR_parser_nodes___AClosureDef____n_kwdo(variable[0]) /*AClosureDef::_n_kwdo*/ =  variable[1] /*n*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[0]) /*PNode::parent=*/;
+  }
+  return_label1000: while(false);
+  tracehead = trace.prev;
+  return;
+}
+void parser_prod___AClosureDef___n_expr__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 11115, LOCATE_parser_prod___AClosureDef___n_expr__eq};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  ATTR_parser_nodes___AClosureDef____n_expr(variable[0]) /*AClosureDef::_n_expr*/ =  variable[1] /*n*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[0]) /*PNode::parent=*/;
+  }
+  return_label1001: while(false);
+  tracehead = trace.prev;
+  return;
+}
+void parser_prod___AClosureDef___replace_child(val_t  self, val_t  param0, val_t  param1) {
+  struct trace_t trace = {NULL, NULL, 11153, LOCATE_parser_prod___AClosureDef___replace_child};
+  val_t variable[8];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Local variable */
+  variable[2] =  param1;
+  /* Register variable[3]: Method return value and escape marker */
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AClosureDef___replace_child, LOCATE_parser_prod, 11155); nit_exit(1);}
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___AClosureDef____n_kwwith(variable[0]) /*AClosureDef::_n_kwwith*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*PNode::parent=*/;
+      /* Register variable[4]: Result */
+      variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_TKwwith, ID_TKwwith)) /*cast TKwwith*/;
+      if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AClosureDef___replace_child, LOCATE_parser_prod, 11159); nit_exit(1);}
+      ATTR_parser_nodes___AClosureDef____n_kwwith(variable[0]) /*AClosureDef::_n_kwwith*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      ATTR_parser_nodes___AClosureDef____n_kwwith(variable[0]) /*AClosureDef::_n_kwwith*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label1002;
+  }
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___AClosureDef____n_id(variable[0]) /*AClosureDef::_n_id*/;
+  /* Register variable[4]: Result */
+  variable[4] = CALL_abstract_collection___Collection___length(variable[4])(variable[4]) /*List::length*/;
+  /* Register variable[4]: Result */
+  variable[4] = NEW_Range_range___Range___without_last( TAG_Int(0), variable[4]) /*new Range[Int]*/;
+  /* Register variable[4]: For iterator */
+  variable[4] = CALL_abstract_collection___Collection___iterator(variable[4])(variable[4]) /*Range::iterator*/;
+  while (true) { /*for*/
+    /* Register variable[5]: For 'is_ok' result */
+    variable[5] = CALL_abstract_collection___Iterator___is_ok(variable[4])(variable[4]) /*Iterator::is_ok*/;
+    if (!UNTAG_Bool(variable[5])) break; /*for*/
+    variable[5] = CALL_abstract_collection___Iterator___item(variable[4])(variable[4]) /*Iterator::item*/ /* Ensure var: For item*/;
+    /* Register variable[6]: Local variable */
+    variable[6] = variable[5];
+    /* Register variable[7]: Result */
+    variable[7] = ATTR_parser_nodes___AClosureDef____n_id(variable[0]) /*AClosureDef::_n_id*/;
+    /* Register variable[7]: Result */
+    variable[7] = CALL_abstract_collection___MapRead_____bra(variable[7])(variable[7],  variable[6] /*i*/) /*List::[]*/;
+    /* Register variable[7]: Result */
+    variable[7] = TAG_Bool((variable[7] ==  variable[1] /*old_child*/) || ((variable[7] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[7])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[7], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[7])(variable[7],  variable[1] /*old_child*/) /*Object::==*/)))));
+    if (UNTAG_Bool(variable[7])) { /*if*/
+      /* Register variable[7]: Result */
+      variable[7] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+      if (UNTAG_Bool(variable[7])) { /*if*/
+        /* Register variable[7]: Result */
+        variable[7] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_TId, ID_TId)) /*cast TId*/;
+        if (!UNTAG_Bool(variable[7])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AClosureDef___replace_child, LOCATE_parser_prod, 11169); nit_exit(1);}
+        /* Register variable[7]: Result */
+        variable[7] = ATTR_parser_nodes___AClosureDef____n_id(variable[0]) /*AClosureDef::_n_id*/;
+        CALL_abstract_collection___Map_____braeq(variable[7])(variable[7],  variable[6] /*i*/,  variable[2] /*new_child*/) /*List::[]=*/;
+        CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*PNode::parent=*/;
+      } else { /*if*/
+        /* Register variable[7]: Result */
+        variable[7] = ATTR_parser_nodes___AClosureDef____n_id(variable[0]) /*AClosureDef::_n_id*/;
+        CALL_abstract_collection___Map___remove_at(variable[7])(variable[7],  variable[6] /*i*/) /*List::remove_at*/;
+      }
+      goto return_label1002;
+    }
+    continue_1003: while(0);
+    CALL_abstract_collection___Iterator___next(variable[4])(variable[4]) /*Iterator::next*/;
+  }
+  break_1003: while(0);
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___AClosureDef____n_kwdo(variable[0]) /*AClosureDef::_n_kwdo*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*PNode::parent=*/;
+      /* Register variable[4]: Result */
+      variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_TKwdo, ID_TKwdo)) /*cast TKwdo*/;
+      if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AClosureDef___replace_child, LOCATE_parser_prod, 11181); nit_exit(1);}
+      ATTR_parser_nodes___AClosureDef____n_kwdo(variable[0]) /*AClosureDef::_n_kwdo*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      ATTR_parser_nodes___AClosureDef____n_kwdo(variable[0]) /*AClosureDef::_n_kwdo*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label1002;
+  }
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___AClosureDef____n_expr(variable[0]) /*AClosureDef::_n_expr*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*PNode::parent=*/;
+      /* Register variable[4]: Result */
+      variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
+      if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AClosureDef___replace_child, LOCATE_parser_prod, 11191); nit_exit(1);}
+      ATTR_parser_nodes___AClosureDef____n_expr(variable[0]) /*AClosureDef::_n_expr*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      ATTR_parser_nodes___AClosureDef____n_expr(variable[0]) /*AClosureDef::_n_expr*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label1002;
+  }
+  return_label1002: while(false);
+  tracehead = trace.prev;
+  return;
+}
+void parser_prod___AClosureDef___visit_all(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 11200, LOCATE_parser_prod___AClosureDef___visit_all};
+  val_t variable[6];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AClosureDef____n_kwwith(variable[0]) /*AClosureDef::_n_kwwith*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AClosureDef____n_kwwith(variable[0]) /*AClosureDef::_n_kwwith*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AClosureDef____n_id(variable[0]) /*AClosureDef::_n_id*/;
+  /* Register variable[3]: For iterator */
+  variable[3] = CALL_abstract_collection___Collection___iterator(variable[3])(variable[3]) /*List::iterator*/;
+  while (true) { /*for*/
+    /* Register variable[4]: For 'is_ok' result */
+    variable[4] = CALL_abstract_collection___Iterator___is_ok(variable[3])(variable[3]) /*ListIterator::is_ok*/;
+    if (!UNTAG_Bool(variable[4])) break; /*for*/
+    variable[4] = CALL_abstract_collection___Iterator___item(variable[3])(variable[3]) /*ListIterator::item*/ /* Ensure var: For item*/;
+    /* Register variable[5]: Local variable */
+    variable[5] = variable[4];
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/,  variable[5] /*n*/) /*Visitor::visit*/;
+    continue_1005: while(0);
+    CALL_abstract_collection___Iterator___next(variable[3])(variable[3]) /*ListIterator::next*/;
+  }
+  break_1005: while(0);
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AClosureDef____n_kwdo(variable[0]) /*AClosureDef::_n_kwdo*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AClosureDef____n_kwdo(variable[0]) /*AClosureDef::_n_kwdo*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AClosureDef____n_expr(variable[0]) /*AClosureDef::_n_expr*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AClosureDef____n_expr(variable[0]) /*AClosureDef::_n_expr*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  return_label1004: while(false);
+  tracehead = trace.prev;
+  return;
+}
+void parser_prod___AClosureDef___visit_all_reverse(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 11216, LOCATE_parser_prod___AClosureDef___visit_all_reverse};
+  val_t variable[5];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AClosureDef____n_kwwith(variable[0]) /*AClosureDef::_n_kwwith*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AClosureDef____n_kwwith(variable[0]) /*AClosureDef::_n_kwwith*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Local variable */
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___AClosureDef____n_id(variable[0]) /*AClosureDef::_n_id*/;
+  /* Register variable[4]: Result */
+  variable[4] = CALL_abstract_collection___Collection___length(variable[4])(variable[4]) /*List::length*/;
+  variable[3] = variable[4];
+  while (true) { /*while*/
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(UNTAG_Int( variable[3] /*i*/)>=UNTAG_Int( TAG_Int(0)));
+    if (!UNTAG_Bool(variable[4])) break; /* while*/
+    /* Register variable[4]: Result */
+    variable[4] = ATTR_parser_nodes___AClosureDef____n_id(variable[0]) /*AClosureDef::_n_id*/;
+    /* Register variable[4]: Result */
+    variable[4] = CALL_abstract_collection___MapRead_____bra(variable[4])(variable[4],  variable[3] /*i*/) /*List::[]*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[4]) /*Visitor::visit*/;
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Int(UNTAG_Int( variable[3] /*i*/)-UNTAG_Int( TAG_Int(1)));
+    variable[3] = variable[4] /*i=*/;
+    continue_1007: while(0);
+  }
+  break_1007: while(0);
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AClosureDef____n_kwdo(variable[0]) /*AClosureDef::_n_kwdo*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AClosureDef____n_kwdo(variable[0]) /*AClosureDef::_n_kwdo*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AClosureDef____n_expr(variable[0]) /*AClosureDef::_n_expr*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AClosureDef____n_expr(variable[0]) /*AClosureDef::_n_expr*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  return_label1006: while(false);
+  tracehead = trace.prev;
+  return;
+}
+void parser_prod___AClosureDef___empty_init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 11123, LOCATE_parser_prod___AClosureDef___empty_init};
+  val_t variable[2];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AClosureDef].i]) return;
+  /* Register variable[1]: Method return value and escape marker */
+  return_label1008: while(false);
+  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AClosureDef].i] = 1;
+  tracehead = trace.prev;
+  return;
+}
+void parser_prod___AClosureDef___init_aclosuredef(val_t  self, val_t  param0, val_t  param1, val_t  param2, val_t  param3, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 11125, LOCATE_parser_prod___AClosureDef___init_aclosuredef};
+  val_t variable[10];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Local variable */
+  variable[2] =  param1;
+  /* Register variable[3]: Local variable */
+  variable[3] =  param2;
+  /* Register variable[4]: Local variable */
+  variable[4] =  param3;
+  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AClosureDef].i]) return;
+  /* Register variable[5]: Method return value and escape marker */
+  CALL_parser_prod___AClosureDef___empty_init(variable[0])(variable[0], init_table /*YYY*/) /*AClosureDef::empty_init*/;
+  ATTR_parser_nodes___AClosureDef____n_kwwith(variable[0]) /*AClosureDef::_n_kwwith*/ =  variable[1] /*n_kwwith*/;
+  /* Register variable[6]: Result */
+  variable[6] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_kwwith*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_kwwith*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n_kwwith*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_kwwith*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n_kwwith*/)( variable[1] /*n_kwwith*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[6])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n_kwwith*/)( variable[1] /*n_kwwith*/, variable[0]) /*PNode::parent=*/;
+  }
+  /* Register variable[6]: Result */
+  variable[6] = NEW_List_list___List___init() /*new List[TId]*/;
+  ATTR_parser_nodes___AClosureDef____n_id(variable[0]) /*AClosureDef::_n_id*/ = variable[6];
+  /* Register variable[6]: For iterator */
+  variable[6] = CALL_abstract_collection___Collection___iterator( variable[2] /*n_id*/)( variable[2] /*n_id*/) /*Collection::iterator*/;
+  while (true) { /*for*/
+    /* Register variable[7]: For 'is_ok' result */
+    variable[7] = CALL_abstract_collection___Iterator___is_ok(variable[6])(variable[6]) /*Iterator::is_ok*/;
+    if (!UNTAG_Bool(variable[7])) break; /*for*/
+    variable[7] = CALL_abstract_collection___Iterator___item(variable[6])(variable[6]) /*Iterator::item*/ /* Ensure var: For item*/;
+    /* Register variable[8]: Local variable */
+    variable[8] = variable[7];
+    /* Register variable[9]: Result */
+    variable[9] = TAG_Bool(( variable[8] /*n*/==NIT_NULL) || VAL_ISA( variable[8] /*n*/, COLOR_TId, ID_TId)) /*cast TId*/;
+    if (!UNTAG_Bool(variable[9])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AClosureDef___init_aclosuredef, LOCATE_parser_prod, 11139); nit_exit(1);}
+    /* Register variable[9]: Result */
+    variable[9] = ATTR_parser_nodes___AClosureDef____n_id(variable[0]) /*AClosureDef::_n_id*/;
+    CALL_abstract_collection___SimpleCollection___add(variable[9])(variable[9],  variable[8] /*n*/) /*IndexedCollection::add*/;
+    CALL_parser_prod___PNode___parent__eq( variable[8] /*n*/)( variable[8] /*n*/, variable[0]) /*PNode::parent=*/;
+    continue_1010: while(0);
+    CALL_abstract_collection___Iterator___next(variable[6])(variable[6]) /*Iterator::next*/;
+  }
+  break_1010: while(0);
+  ATTR_parser_nodes___AClosureDef____n_kwdo(variable[0]) /*AClosureDef::_n_kwdo*/ =  variable[3] /*n_kwdo*/;
+  /* Register variable[6]: Result */
+  variable[6] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[3] /*n_kwdo*/ ==  NIT_NULL /*null*/) || (( variable[3] /*n_kwdo*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[3] /*n_kwdo*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[3] /*n_kwdo*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[3] /*n_kwdo*/)( variable[3] /*n_kwdo*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[6])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[3] /*n_kwdo*/)( variable[3] /*n_kwdo*/, variable[0]) /*PNode::parent=*/;
+  }
+  ATTR_parser_nodes___AClosureDef____n_expr(variable[0]) /*AClosureDef::_n_expr*/ =  variable[4] /*n_expr*/;
+  /* Register variable[6]: Result */
+  variable[6] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[4] /*n_expr*/ ==  NIT_NULL /*null*/) || (( variable[4] /*n_expr*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[4] /*n_expr*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[4] /*n_expr*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[4] /*n_expr*/)( variable[4] /*n_expr*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[6])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[4] /*n_expr*/)( variable[4] /*n_expr*/, variable[0]) /*PNode::parent=*/;
+  }
+  return_label1009: while(false);
+  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AClosureDef].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AQualified___init_aqualified(val_t  self, val_t  param0, val_t  param1, int* init_table) {
-  struct trace_t trace = {NULL, "parser_prod::AQualified::init_aqualified (src/parser//parser_prod.nit:10209,5--10222:25)"};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-    val_t variable3;
-    val_t variable4;
-  trace.prev = tracehead; tracehead = &trace;
-  variable0 =  param0;
-  variable1 =  param1;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AQualified].i]) return;
-  variable2 = NEW_list___List___init(); /*new List[TId]*/
-  ATTR_parser_nodes___AQualified____n_id( self) /*AQualified::_n_id*/ = variable2;
-  variable2 = ((array___AbstractArray___iterator_t)CALL( variable0 /*n_id*/,COLOR_abstract_collection___Collection___iterator))( variable0 /*n_id*/) /*Array::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 failed: src/parser//parser_prod.nit:10216,3--18\n"); 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*/) /*List::add*/;
-    ((parser_prod___PNode___parent__eq_t)CALL( variable3 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable3 /*n*/,  self) /*TId::parent=*/;
-    continue_924: while(0);
-    ((array___ArrayIterator___next_t)CALL(variable2,COLOR_abstract_collection___Iterator___next))(variable2) /*ArrayIterator::next*/;
-  }
-  break_924: 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*/) /*TClassid::==*/)))))));
-  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) /*TClassid::parent=*/;
+void parser_prod___AQualified___n_classid__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 11237, LOCATE_parser_prod___AQualified___n_classid__eq};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  ATTR_parser_nodes___AQualified____n_classid(variable[0]) /*AQualified::_n_classid*/ =  variable[1] /*n*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[0]) /*PNode::parent=*/;
   }
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AQualified].i] = 1;
+  return_label1011: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AQualified___replace_child(val_t  self, val_t  param0, val_t  param1) {
-  struct trace_t trace = {NULL, "parser_prod::AQualified::replace_child (src/parser//parser_prod.nit:10226,5--10249:18)"};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  val_t variable3;
-    val_t variable4;
-  trace.prev = tracehead; tracehead = &trace;
-  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*/) /*PNode::==*/)))))));
-  if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert failed: src/parser//parser_prod.nit:10228,9--32\n"); 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[Int]*/
-  variable2 = variable3;
-  variable2 = ((range___Range___iterator_t)CALL(variable2,COLOR_abstract_collection___Collection___iterator))(variable2) /*Range::iterator*/;
+  struct trace_t trace = {NULL, NULL, 11265, LOCATE_parser_prod___AQualified___replace_child};
+  val_t variable[8];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Local variable */
+  variable[2] =  param1;
+  /* Register variable[3]: Method return value and escape marker */
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AQualified___replace_child, LOCATE_parser_prod, 11267); nit_exit(1);}
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___AQualified____n_id(variable[0]) /*AQualified::_n_id*/;
+  /* Register variable[4]: Result */
+  variable[4] = CALL_abstract_collection___Collection___length(variable[4])(variable[4]) /*List::length*/;
+  /* Register variable[4]: Result */
+  variable[4] = NEW_Range_range___Range___without_last( TAG_Int(0), variable[4]) /*new Range[Int]*/;
+  /* Register variable[4]: For iterator */
+  variable[4] = CALL_abstract_collection___Collection___iterator(variable[4])(variable[4]) /*Range::iterator*/;
   while (true) { /*for*/
-    variable3 = ((abstract_collection___Iterator___is_ok_t)CALL(variable2,COLOR_abstract_collection___Iterator___is_ok))(variable2) /*Iterator::is_ok*/;
-    if (!UNTAG_Bool(variable3)) break; /*for*/
-    variable3 = ((abstract_collection___Iterator___item_t)CALL(variable2,COLOR_abstract_collection___Iterator___item))(variable2) /*Iterator::item*/;
-    variable4 = ATTR_parser_nodes___AQualified____n_id( self) /*AQualified::_n_id*/;
-    variable4 = ((list___List_____bra_t)CALL(variable4,COLOR_abstract_collection___Map_____bra))(variable4,  variable3 /*i*/) /*List::[]*/;
-    variable4 = TAG_Bool((variable4 ==  variable0 /*old_child*/) || ((variable4 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable4,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable4, variable0 /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable4,COLOR_kernel___Object_____eqeq))(variable4,  variable0 /*old_child*/) /*TId::==*/)))));
-    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*/) /*PNode::==*/)))))));
-      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 failed: src/parser//parser_prod.nit:10232,7--30\n"); 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) /*TId::parent=*/;
+    /* Register variable[5]: For 'is_ok' result */
+    variable[5] = CALL_abstract_collection___Iterator___is_ok(variable[4])(variable[4]) /*Iterator::is_ok*/;
+    if (!UNTAG_Bool(variable[5])) break; /*for*/
+    variable[5] = CALL_abstract_collection___Iterator___item(variable[4])(variable[4]) /*Iterator::item*/ /* Ensure var: For item*/;
+    /* Register variable[6]: Local variable */
+    variable[6] = variable[5];
+    /* Register variable[7]: Result */
+    variable[7] = ATTR_parser_nodes___AQualified____n_id(variable[0]) /*AQualified::_n_id*/;
+    /* Register variable[7]: Result */
+    variable[7] = CALL_abstract_collection___MapRead_____bra(variable[7])(variable[7],  variable[6] /*i*/) /*List::[]*/;
+    /* Register variable[7]: Result */
+    variable[7] = TAG_Bool((variable[7] ==  variable[1] /*old_child*/) || ((variable[7] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[7])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[7], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[7])(variable[7],  variable[1] /*old_child*/) /*Object::==*/)))));
+    if (UNTAG_Bool(variable[7])) { /*if*/
+      /* Register variable[7]: Result */
+      variable[7] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+      if (UNTAG_Bool(variable[7])) { /*if*/
+        /* Register variable[7]: Result */
+        variable[7] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_TId, ID_TId)) /*cast TId*/;
+        if (!UNTAG_Bool(variable[7])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AQualified___replace_child, LOCATE_parser_prod, 11271); nit_exit(1);}
+        /* Register variable[7]: Result */
+        variable[7] = ATTR_parser_nodes___AQualified____n_id(variable[0]) /*AQualified::_n_id*/;
+        CALL_abstract_collection___Map_____braeq(variable[7])(variable[7],  variable[6] /*i*/,  variable[2] /*new_child*/) /*List::[]=*/;
+        CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*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*/;
+        /* Register variable[7]: Result */
+        variable[7] = ATTR_parser_nodes___AQualified____n_id(variable[0]) /*AQualified::_n_id*/;
+        CALL_abstract_collection___Map___remove_at(variable[7])(variable[7],  variable[6] /*i*/) /*List::remove_at*/;
       }
-      goto return_label925;
-    }
-    continue_926: while(0);
-    ((abstract_collection___Iterator___next_t)CALL(variable2,COLOR_abstract_collection___Iterator___next))(variable2) /*Iterator::next*/;
-  }
-  break_926: 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*/) /*TClassid::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*PNode::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_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 failed: src/parser//parser_prod.nit:10244,3--31\n"); nit_exit(1);}
-      ATTR_parser_nodes___AQualified____n_classid( self) /*AQualified::_n_classid*/ =  variable1 /*new_child*/;
+      goto return_label1012;
+    }
+    continue_1013: while(0);
+    CALL_abstract_collection___Iterator___next(variable[4])(variable[4]) /*Iterator::next*/;
+  }
+  break_1013: while(0);
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___AQualified____n_classid(variable[0]) /*AQualified::_n_classid*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*PNode::parent=*/;
+      /* Register variable[4]: Result */
+      variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_TClassid, ID_TClassid)) /*cast TClassid*/;
+      if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AQualified___replace_child, LOCATE_parser_prod, 11283); nit_exit(1);}
+      ATTR_parser_nodes___AQualified____n_classid(variable[0]) /*AQualified::_n_classid*/ =  variable[2] /*new_child*/;
     } else { /*if*/
-      ATTR_parser_nodes___AQualified____n_classid( self) /*AQualified::_n_classid*/ =  NIT_NULL /*null*/;
+      ATTR_parser_nodes___AQualified____n_classid(variable[0]) /*AQualified::_n_classid*/ =  NIT_NULL /*null*/;
     }
-    goto return_label925;
+    goto return_label1012;
   }
-  return_label925: while(false);
+  return_label1012: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AQualified___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AQualified::visit_all (src/parser//parser_prod.nit:10253,5--10259:30)"};
-  val_t variable0;
-  val_t variable1;
-    val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  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*/;
+  struct trace_t trace = {NULL, NULL, 11292, LOCATE_parser_prod___AQualified___visit_all};
+  val_t variable[6];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AQualified____n_id(variable[0]) /*AQualified::_n_id*/;
+  /* Register variable[3]: For iterator */
+  variable[3] = CALL_abstract_collection___Collection___iterator(variable[3])(variable[3]) /*List::iterator*/;
   while (true) { /*for*/
-    variable2 = ((list___ListIterator___is_ok_t)CALL(variable1,COLOR_abstract_collection___Iterator___is_ok))(variable1) /*ListIterator::is_ok*/;
-    if (!UNTAG_Bool(variable2)) break; /*for*/
-    variable2 = ((list___ListIterator___item_t)CALL(variable1,COLOR_abstract_collection___Iterator___item))(variable1) /*ListIterator::item*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/,  variable2 /*n*/) /*Visitor::visit*/;
-    continue_928: while(0);
-    ((list___ListIterator___next_t)CALL(variable1,COLOR_abstract_collection___Iterator___next))(variable1) /*ListIterator::next*/;
-  }
-  break_928: 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*/) /*TClassid::==*/)))))));
-  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*/;
-  }
+    /* Register variable[4]: For 'is_ok' result */
+    variable[4] = CALL_abstract_collection___Iterator___is_ok(variable[3])(variable[3]) /*ListIterator::is_ok*/;
+    if (!UNTAG_Bool(variable[4])) break; /*for*/
+    variable[4] = CALL_abstract_collection___Iterator___item(variable[3])(variable[3]) /*ListIterator::item*/ /* Ensure var: For item*/;
+    /* Register variable[5]: Local variable */
+    variable[5] = variable[4];
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/,  variable[5] /*n*/) /*Visitor::visit*/;
+    continue_1015: while(0);
+    CALL_abstract_collection___Iterator___next(variable[3])(variable[3]) /*ListIterator::next*/;
+  }
+  break_1015: while(0);
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AQualified____n_classid(variable[0]) /*AQualified::_n_classid*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AQualified____n_classid(variable[0]) /*AQualified::_n_classid*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  return_label1014: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AQualified___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::AQualified::visit_all_reverse (src/parser//parser_prod.nit:10263,5--10273:30)"};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  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;
+  struct trace_t trace = {NULL, NULL, 11302, LOCATE_parser_prod___AQualified___visit_all_reverse};
+  val_t variable[5];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  /* Register variable[3]: Local variable */
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___AQualified____n_id(variable[0]) /*AQualified::_n_id*/;
+  /* Register variable[4]: Result */
+  variable[4] = CALL_abstract_collection___Collection___length(variable[4])(variable[4]) /*List::length*/;
+  variable[3] = variable[4];
   while (true) { /*while*/
-    variable2 = TAG_Bool(UNTAG_Int( variable1 /*i*/)>=UNTAG_Int( TAG_Int(0)));
-    if (!UNTAG_Bool(variable2)) break; /* while*/
-    variable2 = ATTR_parser_nodes___AQualified____n_id( self) /*AQualified::_n_id*/;
-    variable2 = ((list___List_____bra_t)CALL(variable2,COLOR_abstract_collection___Map_____bra))(variable2,  variable1 /*i*/) /*List::[]*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable2) /*Visitor::visit*/;
-    variable2 = TAG_Int(UNTAG_Int( variable1 /*i*/)-UNTAG_Int( TAG_Int(1)));
-    variable1 = variable2 /*i=*/;
-    continue_930: while(0);
-  }
-  break_930: 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*/) /*TClassid::==*/)))))));
-  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*/;
-  }
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(UNTAG_Int( variable[3] /*i*/)>=UNTAG_Int( TAG_Int(0)));
+    if (!UNTAG_Bool(variable[4])) break; /* while*/
+    /* Register variable[4]: Result */
+    variable[4] = ATTR_parser_nodes___AQualified____n_id(variable[0]) /*AQualified::_n_id*/;
+    /* Register variable[4]: Result */
+    variable[4] = CALL_abstract_collection___MapRead_____bra(variable[4])(variable[4],  variable[3] /*i*/) /*List::[]*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[4]) /*Visitor::visit*/;
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Int(UNTAG_Int( variable[3] /*i*/)-UNTAG_Int( TAG_Int(1)));
+    variable[3] = variable[4] /*i=*/;
+    continue_1017: while(0);
+  }
+  break_1017: while(0);
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___AQualified____n_classid(variable[0]) /*AQualified::_n_classid*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___AQualified____n_classid(variable[0]) /*AQualified::_n_classid*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+  }
+  return_label1016: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___ADoc___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, "parser_prod::ADoc::empty_init (src/parser//parser_prod.nit:10279,5--27)"};
+void parser_prod___AQualified___empty_init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 11245, LOCATE_parser_prod___AQualified___empty_init};
+  val_t variable[2];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ADoc].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ADoc].i] = 1;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AQualified].i]) return;
+  /* Register variable[1]: Method return value and escape marker */
+  return_label1018: while(false);
+  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AQualified].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser_prod___ADoc___init_adoc(val_t  self, val_t  param0, int* init_table) {
-  struct trace_t trace = {NULL, "parser_prod::ADoc::init_adoc (src/parser//parser_prod.nit:10281,5--10289:17)"};
-  val_t variable0;
-  val_t variable1;
-    val_t variable2;
-    val_t variable3;
-  trace.prev = tracehead; tracehead = &trace;
-  variable0 =  param0;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ADoc].i]) return;
-  variable1 = NEW_list___List___init(); /*new List[TComment]*/
-  ATTR_parser_nodes___ADoc____n_comment( self) /*ADoc::_n_comment*/ = variable1;
-  variable1 = ((array___AbstractArray___iterator_t)CALL( variable0 /*n_comment*/,COLOR_abstract_collection___Collection___iterator))( variable0 /*n_comment*/) /*Array::iterator*/;
+void parser_prod___AQualified___init_aqualified(val_t  self, val_t  param0, val_t  param1, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 11247, LOCATE_parser_prod___AQualified___init_aqualified};
+  val_t variable[8];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Local variable */
+  variable[2] =  param1;
+  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AQualified].i]) return;
+  /* Register variable[3]: Method return value and escape marker */
+  CALL_parser_prod___AQualified___empty_init(variable[0])(variable[0], init_table /*YYY*/) /*AQualified::empty_init*/;
+  /* Register variable[4]: Result */
+  variable[4] = NEW_List_list___List___init() /*new List[TId]*/;
+  ATTR_parser_nodes___AQualified____n_id(variable[0]) /*AQualified::_n_id*/ = variable[4];
+  /* Register variable[4]: For iterator */
+  variable[4] = CALL_abstract_collection___Collection___iterator( variable[1] /*n_id*/)( variable[1] /*n_id*/) /*Collection::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 failed: src/parser//parser_prod.nit:10287,3--23\n"); 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*/) /*List::add*/;
-    ((parser_prod___PNode___parent__eq_t)CALL( variable2 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable2 /*n*/,  self) /*TComment::parent=*/;
-    continue_933: while(0);
-    ((array___ArrayIterator___next_t)CALL(variable1,COLOR_abstract_collection___Iterator___next))(variable1) /*ArrayIterator::next*/;
-  }
-  break_933: while(0);
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ADoc].i] = 1;
+    /* Register variable[5]: For 'is_ok' result */
+    variable[5] = CALL_abstract_collection___Iterator___is_ok(variable[4])(variable[4]) /*Iterator::is_ok*/;
+    if (!UNTAG_Bool(variable[5])) break; /*for*/
+    variable[5] = CALL_abstract_collection___Iterator___item(variable[4])(variable[4]) /*Iterator::item*/ /* Ensure var: For item*/;
+    /* Register variable[6]: Local variable */
+    variable[6] = variable[5];
+    /* Register variable[7]: Result */
+    variable[7] = TAG_Bool(( variable[6] /*n*/==NIT_NULL) || VAL_ISA( variable[6] /*n*/, COLOR_TId, ID_TId)) /*cast TId*/;
+    if (!UNTAG_Bool(variable[7])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AQualified___init_aqualified, LOCATE_parser_prod, 11255); nit_exit(1);}
+    /* Register variable[7]: Result */
+    variable[7] = ATTR_parser_nodes___AQualified____n_id(variable[0]) /*AQualified::_n_id*/;
+    CALL_abstract_collection___SimpleCollection___add(variable[7])(variable[7],  variable[6] /*n*/) /*IndexedCollection::add*/;
+    CALL_parser_prod___PNode___parent__eq( variable[6] /*n*/)( variable[6] /*n*/, variable[0]) /*PNode::parent=*/;
+    continue_1020: while(0);
+    CALL_abstract_collection___Iterator___next(variable[4])(variable[4]) /*Iterator::next*/;
+  }
+  break_1020: while(0);
+  ATTR_parser_nodes___AQualified____n_classid(variable[0]) /*AQualified::_n_classid*/ =  variable[2] /*n_classid*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*n_classid*/ ==  NIT_NULL /*null*/) || (( variable[2] /*n_classid*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*n_classid*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*n_classid*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*n_classid*/)( variable[2] /*n_classid*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    CALL_parser_prod___PNode___parent__eq( variable[2] /*n_classid*/)( variable[2] /*n_classid*/, variable[0]) /*PNode::parent=*/;
+  }
+  return_label1019: while(false);
+  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AQualified].i] = 1;
   tracehead = trace.prev;
   return;
 }
 void parser_prod___ADoc___replace_child(val_t  self, val_t  param0, val_t  param1) {
-  struct trace_t trace = {NULL, "parser_prod::ADoc::replace_child (src/parser//parser_prod.nit:10293,5--10305:22)"};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  val_t variable3;
-    val_t variable4;
-  trace.prev = tracehead; tracehead = &trace;
-  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*/) /*PNode::==*/)))))));
-  if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert failed: src/parser//parser_prod.nit:10295,9--32\n"); 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[Int]*/
-  variable2 = variable3;
-  variable2 = ((range___Range___iterator_t)CALL(variable2,COLOR_abstract_collection___Collection___iterator))(variable2) /*Range::iterator*/;
+  struct trace_t trace = {NULL, NULL, 11333, LOCATE_parser_prod___ADoc___replace_child};
+  val_t variable[8];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Local variable */
+  variable[2] =  param1;
+  /* Register variable[3]: Method return value and escape marker */
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ADoc___replace_child, LOCATE_parser_prod, 11335); nit_exit(1);}
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___ADoc____n_comment(variable[0]) /*ADoc::_n_comment*/;
+  /* Register variable[4]: Result */
+  variable[4] = CALL_abstract_collection___Collection___length(variable[4])(variable[4]) /*List::length*/;
+  /* Register variable[4]: Result */
+  variable[4] = NEW_Range_range___Range___without_last( TAG_Int(0), variable[4]) /*new Range[Int]*/;
+  /* Register variable[4]: For iterator */
+  variable[4] = CALL_abstract_collection___Collection___iterator(variable[4])(variable[4]) /*Range::iterator*/;
   while (true) { /*for*/
-    variable3 = ((abstract_collection___Iterator___is_ok_t)CALL(variable2,COLOR_abstract_collection___Iterator___is_ok))(variable2) /*Iterator::is_ok*/;
-    if (!UNTAG_Bool(variable3)) break; /*for*/
-    variable3 = ((abstract_collection___Iterator___item_t)CALL(variable2,COLOR_abstract_collection___Iterator___item))(variable2) /*Iterator::item*/;
-    variable4 = ATTR_parser_nodes___ADoc____n_comment( self) /*ADoc::_n_comment*/;
-    variable4 = ((list___List_____bra_t)CALL(variable4,COLOR_abstract_collection___Map_____bra))(variable4,  variable3 /*i*/) /*List::[]*/;
-    variable4 = TAG_Bool((variable4 ==  variable0 /*old_child*/) || ((variable4 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable4,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable4, variable0 /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable4,COLOR_kernel___Object_____eqeq))(variable4,  variable0 /*old_child*/) /*TComment::==*/)))));
-    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*/) /*PNode::==*/)))))));
-      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 failed: src/parser//parser_prod.nit:10299,7--35\n"); 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) /*TComment::parent=*/;
+    /* Register variable[5]: For 'is_ok' result */
+    variable[5] = CALL_abstract_collection___Iterator___is_ok(variable[4])(variable[4]) /*Iterator::is_ok*/;
+    if (!UNTAG_Bool(variable[5])) break; /*for*/
+    variable[5] = CALL_abstract_collection___Iterator___item(variable[4])(variable[4]) /*Iterator::item*/ /* Ensure var: For item*/;
+    /* Register variable[6]: Local variable */
+    variable[6] = variable[5];
+    /* Register variable[7]: Result */
+    variable[7] = ATTR_parser_nodes___ADoc____n_comment(variable[0]) /*ADoc::_n_comment*/;
+    /* Register variable[7]: Result */
+    variable[7] = CALL_abstract_collection___MapRead_____bra(variable[7])(variable[7],  variable[6] /*i*/) /*List::[]*/;
+    /* Register variable[7]: Result */
+    variable[7] = TAG_Bool((variable[7] ==  variable[1] /*old_child*/) || ((variable[7] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[7])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[7], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[7])(variable[7],  variable[1] /*old_child*/) /*Object::==*/)))));
+    if (UNTAG_Bool(variable[7])) { /*if*/
+      /* Register variable[7]: Result */
+      variable[7] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+      if (UNTAG_Bool(variable[7])) { /*if*/
+        /* Register variable[7]: Result */
+        variable[7] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_TComment, ID_TComment)) /*cast TComment*/;
+        if (!UNTAG_Bool(variable[7])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ADoc___replace_child, LOCATE_parser_prod, 11339); nit_exit(1);}
+        /* Register variable[7]: Result */
+        variable[7] = ATTR_parser_nodes___ADoc____n_comment(variable[0]) /*ADoc::_n_comment*/;
+        CALL_abstract_collection___Map_____braeq(variable[7])(variable[7],  variable[6] /*i*/,  variable[2] /*new_child*/) /*List::[]=*/;
+        CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*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*/;
+        /* Register variable[7]: Result */
+        variable[7] = ATTR_parser_nodes___ADoc____n_comment(variable[0]) /*ADoc::_n_comment*/;
+        CALL_abstract_collection___Map___remove_at(variable[7])(variable[7],  variable[6] /*i*/) /*List::remove_at*/;
       }
-      goto return_label934;
+      goto return_label1021;
     }
-    continue_935: while(0);
-    ((abstract_collection___Iterator___next_t)CALL(variable2,COLOR_abstract_collection___Iterator___next))(variable2) /*Iterator::next*/;
+    continue_1022: while(0);
+    CALL_abstract_collection___Iterator___next(variable[4])(variable[4]) /*Iterator::next*/;
   }
-  break_935: while(0);
-  return_label934: while(false);
+  break_1022: while(0);
+  return_label1021: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___ADoc___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::ADoc::visit_all (src/parser//parser_prod.nit:10310,5--10313:25)"};
-  val_t variable0;
-  val_t variable1;
-    val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  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*/;
+  struct trace_t trace = {NULL, NULL, 11350, LOCATE_parser_prod___ADoc___visit_all};
+  val_t variable[6];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___ADoc____n_comment(variable[0]) /*ADoc::_n_comment*/;
+  /* Register variable[3]: For iterator */
+  variable[3] = CALL_abstract_collection___Collection___iterator(variable[3])(variable[3]) /*List::iterator*/;
   while (true) { /*for*/
-    variable2 = ((list___ListIterator___is_ok_t)CALL(variable1,COLOR_abstract_collection___Iterator___is_ok))(variable1) /*ListIterator::is_ok*/;
-    if (!UNTAG_Bool(variable2)) break; /*for*/
-    variable2 = ((list___ListIterator___item_t)CALL(variable1,COLOR_abstract_collection___Iterator___item))(variable1) /*ListIterator::item*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/,  variable2 /*n*/) /*Visitor::visit*/;
-    continue_937: while(0);
-    ((list___ListIterator___next_t)CALL(variable1,COLOR_abstract_collection___Iterator___next))(variable1) /*ListIterator::next*/;
+    /* Register variable[4]: For 'is_ok' result */
+    variable[4] = CALL_abstract_collection___Iterator___is_ok(variable[3])(variable[3]) /*ListIterator::is_ok*/;
+    if (!UNTAG_Bool(variable[4])) break; /*for*/
+    variable[4] = CALL_abstract_collection___Iterator___item(variable[3])(variable[3]) /*ListIterator::item*/ /* Ensure var: For item*/;
+    /* Register variable[5]: Local variable */
+    variable[5] = variable[4];
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/,  variable[5] /*n*/) /*Visitor::visit*/;
+    continue_1024: while(0);
+    CALL_abstract_collection___Iterator___next(variable[3])(variable[3]) /*ListIterator::next*/;
   }
-  break_937: while(0);
+  break_1024: while(0);
+  return_label1023: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___ADoc___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::ADoc::visit_all_reverse (src/parser//parser_prod.nit:10317,5--10323:11)"};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  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;
+  struct trace_t trace = {NULL, NULL, 11357, LOCATE_parser_prod___ADoc___visit_all_reverse};
+  val_t variable[5];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  /* Register variable[3]: Local variable */
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___ADoc____n_comment(variable[0]) /*ADoc::_n_comment*/;
+  /* Register variable[4]: Result */
+  variable[4] = CALL_abstract_collection___Collection___length(variable[4])(variable[4]) /*List::length*/;
+  variable[3] = variable[4];
   while (true) { /*while*/
-    variable2 = TAG_Bool(UNTAG_Int( variable1 /*i*/)>=UNTAG_Int( TAG_Int(0)));
-    if (!UNTAG_Bool(variable2)) break; /* while*/
-    variable2 = ATTR_parser_nodes___ADoc____n_comment( self) /*ADoc::_n_comment*/;
-    variable2 = ((list___List_____bra_t)CALL(variable2,COLOR_abstract_collection___Map_____bra))(variable2,  variable1 /*i*/) /*List::[]*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable2) /*Visitor::visit*/;
-    variable2 = TAG_Int(UNTAG_Int( variable1 /*i*/)-UNTAG_Int( TAG_Int(1)));
-    variable1 = variable2 /*i=*/;
-    continue_939: while(0);
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(UNTAG_Int( variable[3] /*i*/)>=UNTAG_Int( TAG_Int(0)));
+    if (!UNTAG_Bool(variable[4])) break; /* while*/
+    /* Register variable[4]: Result */
+    variable[4] = ATTR_parser_nodes___ADoc____n_comment(variable[0]) /*ADoc::_n_comment*/;
+    /* Register variable[4]: Result */
+    variable[4] = CALL_abstract_collection___MapRead_____bra(variable[4])(variable[4],  variable[3] /*i*/) /*List::[]*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[4]) /*Visitor::visit*/;
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Int(UNTAG_Int( variable[3] /*i*/)-UNTAG_Int( TAG_Int(1)));
+    variable[3] = variable[4] /*i=*/;
+    continue_1026: while(0);
   }
-  break_939: while(0);
+  break_1026: while(0);
+  return_label1025: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___Start___init(val_t  self, val_t  param0, val_t  param1, int* init_table) {
-  struct trace_t trace = {NULL, "parser_prod::Start::init (src/parser//parser_prod.nit:10330,5--10335:22)"};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___ADoc___empty_init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 11318, LOCATE_parser_prod___ADoc___empty_init};
+  val_t variable[2];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  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;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ADoc].i]) return;
+  /* Register variable[1]: Method return value and escape marker */
+  return_label1027: while(false);
+  init_table[VAL2OBJ(variable[0])->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, 11320, LOCATE_parser_prod___ADoc___init_adoc};
+  val_t variable[7];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ADoc].i]) return;
+  /* Register variable[2]: Method return value and escape marker */
+  CALL_parser_prod___ADoc___empty_init(variable[0])(variable[0], init_table /*YYY*/) /*ADoc::empty_init*/;
+  /* Register variable[3]: Result */
+  variable[3] = NEW_List_list___List___init() /*new List[TComment]*/;
+  ATTR_parser_nodes___ADoc____n_comment(variable[0]) /*ADoc::_n_comment*/ = variable[3];
+  /* Register variable[3]: For iterator */
+  variable[3] = CALL_abstract_collection___Collection___iterator( variable[1] /*n_comment*/)( variable[1] /*n_comment*/) /*Collection::iterator*/;
+  while (true) { /*for*/
+    /* Register variable[4]: For 'is_ok' result */
+    variable[4] = CALL_abstract_collection___Iterator___is_ok(variable[3])(variable[3]) /*Iterator::is_ok*/;
+    if (!UNTAG_Bool(variable[4])) break; /*for*/
+    variable[4] = CALL_abstract_collection___Iterator___item(variable[3])(variable[3]) /*Iterator::item*/ /* Ensure var: For item*/;
+    /* Register variable[5]: Local variable */
+    variable[5] = variable[4];
+    /* Register variable[6]: Result */
+    variable[6] = TAG_Bool(( variable[5] /*n*/==NIT_NULL) || VAL_ISA( variable[5] /*n*/, COLOR_TComment, ID_TComment)) /*cast TComment*/;
+    if (!UNTAG_Bool(variable[6])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ADoc___init_adoc, LOCATE_parser_prod, 11327); nit_exit(1);}
+    /* Register variable[6]: Result */
+    variable[6] = ATTR_parser_nodes___ADoc____n_comment(variable[0]) /*ADoc::_n_comment*/;
+    CALL_abstract_collection___SimpleCollection___add(variable[6])(variable[6],  variable[5] /*n*/) /*IndexedCollection::add*/;
+    CALL_parser_prod___PNode___parent__eq( variable[5] /*n*/)( variable[5] /*n*/, variable[0]) /*PNode::parent=*/;
+    continue_1029: while(0);
+    CALL_abstract_collection___Iterator___next(variable[3])(variable[3]) /*Iterator::next*/;
+  }
+  break_1029: while(0);
+  return_label1028: while(false);
+  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ADoc].i] = 1;
   tracehead = trace.prev;
   return;
 }
 void parser_prod___Start___replace_child(val_t  self, val_t  param0, val_t  param1) {
-  struct trace_t trace = {NULL, "parser_prod::Start::replace_child (src/parser//parser_prod.nit:10338,5--10349:18)"};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  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*/) /*PNode::==*/)))))));
-  if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert failed: src/parser//parser_prod.nit:10340,9--32\n"); 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*/) /*PModule::==*/)))));
-  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*/) /*PNode::==*/)))));
-    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 failed: src/parser//parser_prod.nit:10345,3--30\n"); 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_label941;
+  struct trace_t trace = {NULL, NULL, 11378, LOCATE_parser_prod___Start___replace_child};
+  val_t variable[5];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Local variable */
+  variable[2] =  param1;
+  /* Register variable[3]: Method return value and escape marker */
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___Start___replace_child, LOCATE_parser_prod, 11380); nit_exit(1);}
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_parser_nodes___Start____n_base(variable[0]) /*Start::_n_base*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    /* Register variable[4]: Result */
+    variable[4] = TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+    } else { /*if*/
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[0]) /*PNode::parent=*/;
+      /* Register variable[4]: Result */
+      variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PModule, ID_PModule)) /*cast PModule*/;
+      if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___Start___replace_child, LOCATE_parser_prod, 11385); nit_exit(1);}
+      ATTR_parser_nodes___Start____n_base(variable[0]) /*Start::_n_base*/ =  variable[2] /*new_child*/;
+    }
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*old_child*/)( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*PNode::parent=*/;
+    goto return_label1030;
   }
-  return_label941: while(false);
+  return_label1030: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___Start___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::Start::visit_all (src/parser//parser_prod.nit:10353,5--10356:27)"};
-  val_t variable0;
-  val_t variable1;
+  struct trace_t trace = {NULL, NULL, 11393, LOCATE_parser_prod___Start___visit_all};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  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*/) /*PModule::==*/)))))));
-  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*/;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___Start____n_base(variable[0]) /*Start::_n_base*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___Start____n_base(variable[0]) /*Start::_n_base*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
+  return_label1031: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___Start___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "parser_prod::Start::visit_all_reverse (src/parser//parser_prod.nit:10360,5--10363:27)"};
-  val_t variable0;
-  val_t variable1;
+  struct trace_t trace = {NULL, NULL, 11400, LOCATE_parser_prod___Start___visit_all_reverse};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  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*/) /*PModule::==*/)))))));
-  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*/;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_parser_nodes___Start____n_base(variable[0]) /*Start::_n_base*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_parser_nodes___Start____n_base(variable[0]) /*Start::_n_base*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
+  return_label1032: while(false);
+  tracehead = trace.prev;
+  return;
+}
+void parser_prod___Start___init(val_t  self, val_t  param0, val_t  param1, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 11370, LOCATE_parser_prod___Start___init};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Local variable */
+  variable[2] =  param1;
+  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_Start].i]) return;
+  /* Register variable[3]: Method return value and escape marker */
+  ATTR_parser_nodes___Start____n_base(variable[0]) /*Start::_n_base*/ =  variable[1] /*n_base*/;
+  ATTR_parser_nodes___Start____n_eof(variable[0]) /*Start::_n_eof*/ =  variable[2] /*n_eof*/;
+  return_label1033: while(false);
+  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_Start].i] = 1;
   tracehead = trace.prev;
   return;
 }